java arraylist how declare
このチュートリアルでは、コード例を使用してJava ArrayListを宣言、初期化、および出力する方法について説明します。また、Javaでの2DArraylistとArrayListの実装についても学習します。
Javaコレクションフレームワークとリストインターフェイスについては、以前のチュートリアルで詳しく説明しました。 ArrayListは、Collections Frameworkの一部であるデータ構造であり、配列やベクトルに似ていると見なすことができます。
ArrayListは、いつでも要素を追加または削除したり、簡単に言うと動的に要素を追加または削除したりできる動的配列として認識できます。
つまり、宣言された後もサイズが静的なままである配列とは異なり、そのサイズは動的に増減する可能性があります。
学習内容:
- JavaのArrayListクラス
- 結論
JavaのArrayListクラス
JavaのArrayListデータ構造は、「」の一部であるArrayListクラスによって表されます。 java.util ' パッケージ。
ArrayListクラスの階層を以下に示します。
ご覧のとおり、ArrayListクラスは、Collectionインターフェイスから拡張されたListインターフェイスを実装しています。
ArrayListクラスの一般的な定義を以下に示します。
public class ArrayList extends AbstractList implements List,RandomAccess, Cloneable, Serializable
ArrayListの特徴的な特性のいくつかを次に示します。
- JavaのArrayListクラスは、挿入順序を維持することによって要素を格納します。
- ArrayListは、そこに格納されている重複要素を許可します。
- ArrayListは同期されていません。これは、JavaのVectorクラスとArrayListを区別する主要なポイントです。
- JavaのArrayListは、C ++のVectorsと同じです。
- JavaのArrayListも配列のようなインデックスを使用し、ランダムアクセスをサポートします。
- ArrayListから要素を削除する場合は、要素の多くのシフトを実行する必要があるため、ArrayList内の要素を操作する操作は遅くなります。
- ArrayListクラスにはプリミティブ型を含めることはできず、オブジェクトのみを含めることができます。この場合、通常は「オブジェクトのArrayList」と呼びます。したがって、整数型の要素を格納する場合は、プリミティブ型のintではなく、ラッパークラスのIntegerオブジェクトを使用する必要があります。
ArrayListを作成して宣言する
プログラムでArrayListクラスを使用するには、次に示すように、「import」ディレクティブを使用して、最初にそれをプログラムに含める必要があります。
import java.util.ArrayList;
または
import java.util.*; //this will include all classes from java.util package
プログラムにArrayListクラスをインポートすると、ArrayListオブジェクトを作成できます。
一般的なArrayList作成構文は次のとおりです。
ArrayList arrayList = new ArrayList ();
デフォルトのコンストラクターを使用する上記のステートメントとは別に、ArrayListクラスは、ArrayListの作成に使用できる他のオーバーロードされたコンストラクターも提供します。
コンストラクターメソッド
JavaのArrayListクラスは、ArrayListを作成するための次のコンストラクターメソッドを提供します。
メソッド#1:ArrayList()
このメソッドは、ArrayListクラスのデフォルトのコンストラクターを使用し、空のArrayListを作成するために使用されます。
このメソッドの一般的な構文は次のとおりです。
ArrayList list_name = new ArrayList();
例えば、 次のステートメントを使用して、String型の汎用ArrayListを作成できます。
ArrayList arraylist = new ArrayList();
これにより、String型の「arraylist」という名前の空のArrayListが作成されます。
メソッド#2:ArrayList(intcapacity)
このオーバーロードされたコンストラクターを使用して、コンストラクターへの引数として指定されたサイズまたは容量でArrayListを作成できます。
このメソッドの一般的な構文は次のとおりです。
ArrayList list_name = new ArrayList(int capacity);
例:
ArrayList arraylist = new ArrayList(10);
上記のステートメントは、容量10の整数型の「arraylist」という名前の空のArrayListを作成します。
メソッド#3:ArrayList(コレクションc)
ArrayListクラスの3番目のオーバーロードされたコンストラクターは、既存のコレクションを引数として受け取り、指定されたコレクションcの要素を初期要素としてArrayListを作成します。
このコンストラクターを使用したArrayList初期化の一般的な構文は次のとおりです。
ArrayList list_name = new ArrayList (Collection c)
例えば、 intListが要素{10,20,30,40,50}を持つ既存のコレクションである場合、次のステートメントは、intListの内容を初期要素として持つリスト「arraylist」を作成します。
ArrayList ArrayList = new ArrayList(intList);
ArrayListクラスは、リストの内容を操作するために使用できるさまざまなメソッドもサポートしています。これらのメソッドについては、次のチュートリアル「JavaのArrayListメソッド」で詳しく説明します。
JavaでArrayListを初期化する
ArrayListが作成されたら、ArrayListを値で初期化する方法は複数あります。このセクションでは、これらの方法について説明します。
#1)Arrays.asListの使用
ここでは、ArraysクラスのasListメソッドを使用してListに変換されたArrayを渡して、ArrayListを初期化できます。
一般的な構文:
ArrayList arrayListName = new ArrayList( Arrays.asList (Object o1, Object o2, …, Object on));
例:
import java.util.*; public class Main { public static void main(String args()) { //create and initialize ArrayList object myList with Arrays.asList method ArrayList myList = new ArrayList( Arrays.asList('One', 'Two', 'Three')); //print the ArrayList System.out.println('List contents:'+myList); } }
出力:
#2)匿名内部クラスメソッドの使用
ここでは、anonymous内部クラスを使用してArrayListを値に初期化します。
ArrayListの初期化に匿名内部クラスを使用するための一般的な構文は次のとおりです。
ArrayListarraylistName = new ArrayList(){{ add(Object o1); add (Object o2);… add (Object on);}};
例:
import java.util.*; public class Main { public static void main(String args()) { //create and initialize ArrayList with anonymous inner class calls ArrayList colors = new ArrayList(){{ add('Red'); add('Blue'); add('Purple'); }}; //print the ArrayList System.out.println('Content of ArrayList:'+colors); } }
出力:
#3)addメソッドの使用
これは、コレクションに要素を追加するための一般的な方法です。
addメソッドを使用してArrayListに要素を追加するための一般的な構文は次のとおりです。
ArrayListArraylistName = new ArrayList(); ArraylistName.add(value1); ArraylistName.add(value2); ArraylistName.add(value3);
プログラミング例:
import java.util.*; public class Main { public static void main(String args()) { //create ArrayList ArrayList colors = new ArrayList(); //add elements to the ArrayList using add method colors.add('Red'); colors.add('Green'); colors.add('Blue'); colors.add('Orange'); //print the ArrayList System.out.println('Content of ArrayList:'+colors); }
出力:
#4)Collection.nCopiesメソッドの使用
このメソッドは、同じ値でArrayListを初期化するために使用されます。初期化する要素の数と初期値をメソッドに提供します。
初期化の一般的な構文は次のとおりです。
ArrayList arrayListName = new ArrayList(Collections.nCopies(count, element));
以下の例は、Collections.nCopiesメソッドを使用した配列の初期化を示しています。
import java.util.*; public class Main { public static void main(String args()) { //create ArrayList with 10 elements //initialized to value 10 using Collections.nCopies ArrayList intList = new ArrayList(Collections.nCopies(10,10)); //print the ArrayList System.out.println('Content of ArrayList:'+intList); } }
出力:
ArrayListを反復処理する
ArrayListをトラバースまたはループするには、次の方法があります。
- forループの使用
- for-eachループ(拡張forループ)。
- Iteratorインターフェースの使用。
- ListIteratorインターフェースによる。
- forEachRemaining()メソッドによる。
実際、これらのメソッドは、一般的にコレクションを反復処理するために使用されます。このチュートリアルでは、ArrayListに関する各メソッドの例を示します。
#1)forループの使用
インデックスベースのforループを使用して、ArrayListをトラバースし、その要素を出力できます。
以下は、forループを使用してArrayListをトラバースして出力する例です。
import java.util.*; public class Main { public static void main(String() args) { //create a list List intList = new ArrayList(); intList.add(10); intList.add(20); intList.add(30); intList.add(40); intList.add(50); //create & initialize a new ArrayList with previous list ArrayList arraylist = new ArrayList(intList); System.out.println('Contents of ArrayList using for-loop:'); //use for loop to traverse through its elements and print it for(int i=0;i 出力:

これは、ArrayListの要素をトラバースして出力する最も簡単で簡単な方法であり、他のコレクションの場合も同じように機能します。
#2)for-eachループ(forループの拡張)
for-eachループまたは拡張forループを使用してArrayListをトラバースすることもできます。 Java 8より前は、ラムダ式は含まれていませんでした。ただし、Java 8以降では、for-eachループにLambda式を含めることもできます。
以下のプログラムは、foreachループとラムダ式を使用したArrayListのトラバーサルと出力を示しています。
import java.util.*; public class Main { public static void main(String() args) { //create a list List intList = new ArrayList(); intList.add(10); intList.add(20); intList.add(30); intList.add(40); intList.add(50); //create & initialize a new ArrayList with previous list ArrayList arraylist = new ArrayList(intList); System.out.println('Contents of ArrayList using for-each loop:'); //use for-each loop to traverse through its elements and print it intList.forEach(val ->{ System.out.print(val + ' '); }); } }
出力:

#3)イテレータインターフェイスの使用
前のトピックで、Iteratorインターフェースについて詳しく見てきました。イテレータインターフェイスを使用して、ArrayListを反復処理し、その値を出力できます。
次のプログラムはこれを示しています。
import java.util.*; public class Main { public static void main(String() args) { //create a list List intList = new ArrayList(); intList.add(5); intList.add(10); intList.add(15); intList.add(20); intList.add(25); //create & initialize a new ArrayList with previous list ArrayList arraylist = new ArrayList(intList); System.out.println('Contents of ArrayList using Iterator interface:'); //Traverse through the ArrayList using iterator Iterator iter=arraylist.iterator(); while(iter.hasNext()){ System.out.print(iter.next() + ' '); } } }
出力:

#4)ListIteratorインターフェースによる
ListIteratorを使用してArrayListをトラバースすることもできます。 ListIteratorを使用して、ArrayListを順方向および逆方向にトラバースできます。
ListIteratorの使用例を示すJavaプログラムを実装しましょう。
import java.util.*; class Main{ public static void main(String args()){ //create a list and initiliaze it List colors_list=new ArrayList();//Creating arraylist colors_list.add('Red'); colors_list.add('Green'); colors_list.add('Blue'); colors_list.add('Cyan'); colors_list.add('Magenta'); colors_list.add('Yellow'); System.out.println('The contents of the list using ListIterator:'); //Traverse the list using ListIterator ListIterator color_iter=colors_list.listIterator(colors_list.size()); while(color_iter.hasPrevious()) { String str=color_iter.previous(); System.out.print(str + ' '); } } }
出力:

出力からわかるように、上記のプログラムでは、ListIteratorのhasPrevious()メソッドとprevious()メソッドを使用してArrayListが逆方向にトラバースされます。
#5)forEachRemaining()メソッドによる
これは、ArrayListをトラバースする方法の1つであり、Java8以降で使用できます。
次のプログラムは、ArrayListをトラバースするforEachRemaining()メソッドを示しています。
import java.util.*; class Main{ public static void main(String args()){ //create a list and initiliaze it List colors_list=new ArrayList(); colors_list.add('Red'); colors_list.add('Green'); colors_list.add('Blue'); colors_list.add('Cyan'); colors_list.add('Magenta'); colors_list.add('Yellow'); System.out.println('The contents of the list using forEachRemaining() method:'); //Traverse the list using forEachRemaining () method Iterator itr=colors_list.iterator(); itr.forEachRemaining(val-> //lambda expression { System.out.print(val + ' '); }); } }
出力:

Webアプリケーションのパフォーマンステストツール
forEachRemaining()メソッドをイテレーターと一緒に使用します。それぞれに似ており、このメソッド内でラムダ式を使用します。
ArrayListJavaの例
このセクションでは、JavaでのArrayListの実装について説明します。例として、Java ArrayListを作成、初期化、使用してさまざまな操作を実行する完全な例を実装します。
import java.util.ArrayList; class Main { public static void main(String() args) { //Creating a generic ArrayList ArrayList newList = new ArrayList(); //Size of arrayList System.out.println('Original size of ArrayList at creation: ' + newList.size()); //add elements to it newList.add('IND'); newList.add('USA'); newList.add('AUS'); newList.add('UK'); //print the size after adding elements System.out.println('ArrayList size after adding elements: ' + newList.size()); //Print ArrayList contents System.out.println('Contents of the ArrayList: ' + newList); //Remove an element from the list newList.remove('USA'); System.out.println('ArrayList contents after removing element(USA): ' + newList); //Remove another element by index newList.remove(2); System.out.println('ArrayList contents after removing element at index 2: ' + newList); //print new size System.out.println('Size of arrayList: ' + newList.size()); //print list contents System.out.println('Final ArrayList Contents: ' + newList); } }
出力:

Javaの2次元ArrayList
ArrayListにはArraysのような次元がないことがわかっています。ただし、「2DArrayLists」または「ArrayListofArrayLists」とも呼ばれるネストされたArrayListを作成できます。
これらのネストされたArrayListの背後にある単純な考え方は、ArrayListが与えられた場合、このArrayListの各要素は別のArrayListであるということです。
次のプログラムを使ってこれを理解しましょう。
import java.util.*; public class Main { public static void main(String() args) { int num = 3; // declare an arrayList of ArrayLists or 2D ArrayList ArrayList intList = new ArrayList (num); // Create individual elements or ArrayLists and add them to intList as elements ArrayList list_elem1 = new ArrayList(); list_elem1.add(10); intList.add(list_elem1); ArrayList list_elem2 = new ArrayList(); list_elem2.add(20); list_elem2.add(30); intList.add(list_elem2); ArrayList list_elem3 = new (); list_elem3.add(40); list_elem3.add(50); list_elem3.add(60); intList.add(list_elem3); System.out.println('Contents of 2D ArrayList(Nested ArrayList):'); //print the 2D ArrayList or nested ArrayList for (int i = 0; i 出力:

上記のプログラムは2DArrayListを示しています。ここでは、まず、ArrayListsのArrayListを宣言します。次に、これらの各ArrayListをNested ArrayListに追加するときに、ネストされたArrayListの個々の要素として機能する個々のArrayListを定義します。
ArrayListの各要素にアクセスするには、getメソッドを2回呼び出す必要があります。最初にネストされたArrayListの行にアクセスし、次に行と列の個々の共通部分にアクセスします。
ArrayListのネストされたレベルを増やして、多次元ArrayListを定義できることに注意してください。 例えば、 3D ArrayListには、要素として2DArrayListが含まれます。
よくある質問
Q#1)JavaのArrayListとは何ですか?
回答: JavaのArrayListは動的配列です。本質的にサイズ変更可能です。つまり、新しい要素が追加されるとサイズが大きくなり、要素が削除されるとサイズが小さくなります。
Q#2)ArrayとArrayListの違いは何ですか?
回答: 配列は静的構造であり、一度宣言するとそのサイズを変更することはできません。 ArrayListは動的配列であり、要素が追加または削除されるとサイズが変更されます。
配列はJavaの基本構造ですが、ArrayListはJavaのコレクションフレームワークの一部です。もう1つの違いは、Arrayは添え字(())を使用して要素にアクセスするのに対し、ArrayListはメソッドを使用してその要素にアクセスすることです。
Q#3)ArrayListはリストですか?
回答: ArrayListは、リストのサブタイプです。 ArrayListはクラスであり、Listはインターフェイスです。
Q#4)ArrayListはコレクションですか?
回答: いいえ。ArrayListは、インターフェイスであるCollectionの実装です。
Q#5)ArrayListはどのようにサイズを増やしますか?
回答: 内部的には、ArrayListは配列として実装されています。 ArrayListにはサイズパラメータがあります。要素がArrayListに追加され、サイズ値に達すると、ArrayListは、新しい要素に対応するために別の配列を内部的に追加します。
結論
これは、JavaのArrayListクラスの基本に関するチュートリアルでした。 ArrayListの詳細なプログラミング実装とともに、ArrayListクラスの作成と初期化を見てきました。
また、2Dおよび多次元のArrayListについても説明しました。 ArrayListクラスは、要素を操作するために使用できるさまざまなメソッドをサポートしています。今後のチュートリアルでは、これらの方法を取り上げます。
=> EasyJavaトレーニングシリーズをお読みください。
推奨読書