ArrayList は、Java Collection Framework の List インターフェースを実装するクラスです。これは、各要素を順番に格納してアクセスする線形構造です。これは、内部で動的配列を使用して要素を格納するためです。配列と同様に、重複した要素を保存することもできます。ここでの動的配列とは、必要に応じて拡大および縮小できる配列を指します。この記事では、ArrayList の内部動作を調べて、ArrayList が要素を格納し、操作中にサイズを変更する方法を示します。
私たちのほとんどは、標準の配列が固定長であることを知っています。配列が宣言され初期化されると、拡大または縮小することはできません。つまり、サイズを指定した後に要素を追加することはできません。ただし、まれなケースでは、開発者は実行時まで必要な配列サイズがわからない場合があります。この場合、要素の数を動的に増減できる ArrayList は配列よりも優れた代替手段です。
プログラムで ArrayList を使用するには、まず ArrayList クラスのインスタンスを作成する必要があります。この目的のために、Java は以下に示す 3 つの異なるコンストラクターを提供します。
ArrayList(): 空の ArrayList を作成します。
ArrayList(intcapacityInitial): このコンストラクターでは、ArrayList が保持できる要素の数の初期容量を渡すことができます。素子数が初期容量に達すると、自動的に容量が増加します。
ArrayList(Collection collectionName): このコンストラクターを使用して、別のコレクションから ArrayList を作成することもできます。
組み込みメソッド「add()」を使用して要素を ArrayList に追加すると、まず配列内に新しい要素を格納するのに十分なスペースがあるかどうかがチェックされます。存在する場合、新しい要素を配列内の次に使用可能なインデックスに割り当てます。新しい要素のための十分なスペースがない場合は、より大きな容量 (通常は現在の容量の 1.5 倍) を持つ新しい配列を作成し、古い配列から既存の要素をすべて新しい配列にコピーし、新しい要素を次の配列に割り当てます。新しく作成された配列内の要素の利用可能なインデックス。
組み込みメソッド "remove()" を使用して ArrayList から要素を削除すると、削除された要素の後のすべての要素が 1 インデックス左に移動されます。ただし、配列はすぐには縮小されませんが、容量に比べてサイズが小さすぎる場合は、後で縮小される可能性があります。
上で説明した点をよりよく理解するために、いくつかの例について説明します。
次の例は、Java で ArrayList の要素を作成して出力する方法を示しています。
rreeimport 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); } }
次の例では、初期容量で ArrayList を作成し、指定された容量を超える要素を追加して、ArrayList が動的に拡張できることを示します。
rreeList of elements: [8, 5, 2, 9, 2, 4, 9, 7]
この例では、HashSet から ArrayList を作成して、コレクションの要素を ArrayList に追加できることを示します。内部的には、最初に渡されたコレクションのサイズをチェックし、次に「Arrays.copyOf()」メソッドを使用して指定された ArrayList に要素を格納します。
rreeimport 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); } }
以上がJava の ArrayList の内部動作の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。