Java の ArrayList の内部動作

WBOY
リリース: 2023-09-16 16:05:08
転載
1400 人が閲覧しました

Java の ArrayList の内部動作

ArrayList は、Java Collection Framework の List インターフェースを実装するクラスです。これは、各要素を順番に格納してアクセスする線形構造です。これは、内部で動的配列を使用して要素を格納するためです。配列と同様に、重複した要素を保存することもできます。ここでの動的配列とは、必要に応じて拡大および縮小できる配列を指します。この記事では、ArrayList の内部動作を調べて、ArrayList が要素を格納し、操作中にサイズを変更する方法を示します。

ArrayList は Java の内部でどのように動作しますか?

私たちのほとんどは、標準の配列が固定長であることを知っています。配列が宣言され初期化されると、拡大または縮小することはできません。つまり、サイズを指定した後に要素を追加することはできません。ただし、まれなケースでは、開発者は実行時まで必要な配列サイズがわからない場合があります。この場合、要素の数を動的に増減できる ArrayList は配列よりも優れた代替手段です。

ArrayList のコンストラクター

プログラムで ArrayList を使用するには、まず ArrayList クラスのインスタンスを作成する必要があります。この目的のために、Java は以下に示す 3 つの異なるコンストラクターを提供します。

  • ArrayList(): 空の ArrayList を作成します。

  • ArrayList(intcapacityInitial): このコンストラクターでは、ArrayList が保持できる要素の数の初期容量を渡すことができます。素子数が初期容量に達すると、自動的に容量が増加します。

  • ArrayList(Collection collectionName): このコンストラクターを使用して、別のコレクションから ArrayList を作成することもできます。

なぜ ArrayList は動的なのでしょうか?

組み込みメソッド「add()」を使用して要素を ArrayList に追加すると、まず配列内に新しい要素を格納するのに十分なスペースがあるかどうかがチェックされます。存在する場合、新しい要素を配列内の次に使用可能なインデックスに割り当てます。新しい要素のための十分なスペースがない場合は、より大きな容量 (通常は現在の容量の 1.5 倍) を持つ新しい配列を作成し、古い配列から既存の要素をすべて新しい配列にコピーし、新しい要素を次の配列に割り当てます。新しく作成された配列内の要素の利用可能なインデックス。

組み込みメソッド "remove()" を使用して ArrayList から要素を削除すると、削除された要素の後のすべての要素が 1 インデックス左に移動されます。ただし、配列はすぐには縮小されませんが、容量に比べてサイズが小さすぎる場合は、後で縮小される可能性があります。

上で説明した点をよりよく理解するために、いくつかの例について説明します。

例 1

次の例は、Java で ArrayList の要素を作成して出力する方法を示しています。

rree

出力

import java.util.*;
public class Example1 {
   public static void main(String[] args) {
	   // Creating arraylist 
      ArrayList<Integer> araylist = new ArrayList<Integer>();
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>// Adding elements in arraylist<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(8);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(5);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(2);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(9);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(2);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(4);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(9);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(7);
<span style="font-size: 11.4844px;">      </span>System.out.println("List of elements: " + araylist);
   }
}
ログイン後にコピー

例 2

次の例では、初期容量で ArrayList を作成し、指定された容量を超える要素を追加して、ArrayList が動的に拡張できることを示します。

rree

出力

List of elements: [8, 5, 2, 9, 2, 4, 9, 7]
ログイン後にコピー

例 3

この例では、HashSet から ArrayList を作成して、コレクションの要素を ArrayList に追加できることを示します。内部的には、最初に渡されたコレクションのサイズをチェックし、次に「Arrays.copyOf()」メソッドを使用して指定された ArrayList に要素を格納します。

rree

出力

import java.util.*;
public class Example2 {
   public static void main(String[] args) {
      // Creating arraylist with initial capacity of 5
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>ArrayList<Integer> araylist = new ArrayList<Integer>(5);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>// Adding elements in arraylist
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(80); // 1
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(15); // 2
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(23); // 3
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(9); // 4
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(12); // 5
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>// adding more elements 
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(14);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(91);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>araylist.add(74);
<span style="font-size: 0.875em; font-weight: var(--bs-body-font-weight);">      </span>System.out.println("List of elements: " + araylist);
   }
}
ログイン後にコピー
###結論は###

この記事は ArrayList を定義することから始めましたが、次のセクションではその内部の仕組みについて説明します。 ArrayList はサイズ変更可能な配列で、デフォルトの容量は 10 ですが、要素を追加すると容量を増やすことができます。 ArrayList を作成するときに、そのコンストラクターで初期容量を指定することもできます。

以上がJava の ArrayList の内部動作の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート