java list how create
このJavaリストのチュートリアルでは、Javaでリストを作成、初期化、および印刷する方法について説明します。チュートリアルでは、完全なコード例を使用してリストのリストについても説明しています。
このチュートリアルでは、Javaコレクションインターフェイスの基本構造の1つであるデータ構造「リスト」を紹介します。
Javaのリストは、順序に従った要素のシーケンスです。 java.utilパッケージのListインターフェースは、Listと呼ばれる特定の方法で順序付けられたオブジェクトのこのシーケンスを実装するインターフェースです。
=> ここですべてのJavaチュートリアルを確認してください。
配列と同様に、リスト要素には、最初のインデックスが0から始まるインデックスを使用してアクセスすることもできます。インデックスは、インデックス「i」の特定の要素を示します。つまり、リストの先頭からi要素離れています。
Javaのリストの特徴には次のものがあります。
- リストには重複する要素を含めることができます。
- リストには「null」要素を含めることもできます。
- リストはジェネリックをサポートします。つまり、ジェネリックリストを持つことができます。
- 同じリストに混合オブジェクト(異なるクラスのオブジェクト)を含めることもできます。
- リストは常に挿入順序を保持し、位置アクセスを許可します。
学習内容:
Javaでリスト
Java Listインターフェースは、JavaCollectionインターフェースのサブタイプです。これは、JavaのCollectionインターフェースを継承する標準インターフェースです。
以下に、Javaリストインターフェースのクラス図を示します。

上記のクラス図に示されているように、Javaリストインターフェイスはjava.utilパッケージのCollectionインターフェイスから拡張されており、Collectionインターフェイスはjava.utilパッケージのIterableインターフェイスから拡張されています。クラスAbstractListは、Listインターフェースの骨格実装を提供します。
LinkedList、Stack、Vector、ArrayList、およびCopyOnWriteArrayListクラスはすべて、プログラマーが頻繁に使用するListインターフェイスの実装クラスです。したがって、Javaには、Stack、LinkedList、ArrayList、Vectorの4種類のリストがあります。
したがって、リストインターフェイスを実装する必要がある場合は、要件に応じて上記のリストタイプクラスのいずれかを実装できます。プログラムにリストインターフェイスの機能を含めるには、次のことを行う必要があります。 次のように、リストインターフェイスとその他のクラス定義を含むパッケージjava.util。*をインポートします。
import java.util.*;リストの作成と宣言
Listはインターフェースであり、ArrayList、Stack、Vector、LinkedListなどのクラスによって実装されることはすでに説明しました。したがって、あなたはすることができます 次のいずれかの方法でリストのインスタンスを宣言および作成します。
List linkedlist = new LinkedList(); List arrayList = new ArrayList(); List vec_list = new Vector(); List stck_list = new Stack(); 上に示したように、上記のクラスのいずれかを使用してリストを作成し、これらのリストを値で初期化できます。上記のステートメントから、リストのインスタンスの作成に使用されるクラスに応じて要素の順序が変わることがわかります。
例えば、 スタッククラスのリストの場合、順序は後入れ先出し(LIFO)です。
Javaリストを初期化する
以下に示すメソッドのいずれかを使用して、リストオブジェクトを初期化できます。
#1)asListメソッドの使用
メソッドasList()については、配列のトピックですでに詳しく説明されています。配列値を使用して不変のリストを作成できます。
一般的な構文は次のとおりです。
List listname = Arrays.asList(array_name);ここで、data_typeは配列のdata_typeと一致する必要があります。
上記のステートメントは不変のリストを作成します。リストを変更可能にする場合は、newを使用してリストのインスタンスを作成し、asListメソッドを使用して配列要素をリストに割り当てる必要があります。
これは以下のとおりです。
List listname = new ArrayList (Arrays.asList(array_name));しましょう asListメソッドを使用してリストの作成と初期化を表示するプログラムをJavaで実装します 。
複数の従業員のための最高のタイムシートアプリ
import java.util.*; public class Main { public static void main(String() args) { //array of strings String() strArray = {'Delhi', 'Mumbai', 'Kolkata', 'Chennai'}; //initialize an immutable list from array using asList method List mylist = Arrays.asList(strArray); //print the list System.out.println('Immutable list:'); for(String val : mylist){ System.out.print(val + ' '); } System.out.println('
'); //initialize a mutable list(arraylist) from array using asList method List arrayList = new ArrayList(Arrays.asList(strArray)); System.out.println('Mutable list:'); //add one more element to list arrayList.add('Pune'); //print the arraylist for(String val : arrayList){ System.out.print(val + ' '); } } 出力:

上記のプログラムでは、最初にasListメソッドを使用して不変リストを作成しました。次に、ArrayListのインスタンスを作成し、asListメソッドを使用して配列の値でこのArrayListを初期化することにより、可変リストを作成します。
2番目のリストは変更可能であるため、さらに値を追加することもできます。
#2)List.add()を使用する
すでに述べたように、リストは単なるインターフェースであるため、インスタンス化することはできません。ただし、このインターフェイスを実装するクラスをインスタンス化することはできます。したがって、リストクラスを初期化するには、リストインターフェイスメソッドであるが各クラスによって実装されるそれぞれのaddメソッドを使用できます。
もし、あんたが 以下のようにリンクリストクラスをインスタンス化します。
List llist = new LinkedList ();次に、要素をリストに追加するには、次のようにaddメソッドを使用できます。
llist.add(3);同じステートメントでaddメソッドを呼び出すことによってリストがインスタンス化および初期化される「二重中括弧の初期化」と呼ばれる手法もあります。
これは、以下に示すように実行されます。
List llist = new LinkedList (){{ add(1); add(3);}};上記のステートメントは、要素1と3をリストに追加します。
次のプログラムは、 addメソッドを使用したリストの初期化 。また、二重中括弧の初期化手法も使用します。
import java.util.*; public class Main { public static void main(String args()) { // ArrayList.add method List str_list = new ArrayList(); str_list.add('Java'); str_list.add('C++'); System.out.println('ArrayList : ' + str_list.toString()); // LinkedList.add method List even_list = new LinkedList(); even_list.add(2); even_list.add(4); System.out.println('LinkedList : ' + even_list.toString()); // double brace initialization - use add with declaration & initialization List num_stack = new Stack(){{ add(10);add(20); }}; System.out.println('Stack : ' + num_stack.toString()); } }出力:

このプログラムには、ArrayList、LinkedList、Stackの3つの異なるリスト宣言があります。
ArrayListオブジェクトとLinkedListオブジェクトがインスタンス化されてから、addメソッドが呼び出されてこれらのオブジェクトに要素が追加されます。スタックの場合、二重中括弧の初期化が使用され、インスタンス化自体の間にaddメソッドが呼び出されます。
#3)コレクションクラスメソッドの使用
Javaのcollectionsクラスには、リストを初期化するために使用できるさまざまなメソッドがあります。
いくつかの方法は次のとおりです。
- 全て追加する
ザ・ コレクションの一般的な構文addAllメソッドは次のとおりです。
List listname = Collections.EMPTY_LIST; Collections.addAll(listname = new ArrayList(), values…); ここでは、空のリストに値を追加します。 addAllメソッドは、リストを最初のパラメーターとして受け取り、その後にリストに挿入される値を取ります。
- unmodizableList()
メソッド「unmodizableList()」は、要素を追加または削除できない不変のリストを返します。
このメソッドの一般的な構文は次のとおりです。
List listname = Collections.unmodifiableList(Arrays.asList(values…));このメソッドは、リスト値をパラメーターとして受け取り、リストを返します。このリストから要素を追加または削除しようとすると、コンパイラは例外をスローします UnsupportedOperationException。
- singletonList()
「singletonList」メソッドは、単一の要素を含むリストを返します。リストは不変です。
このメソッドの一般的な構文は次のとおりです。
List listname = Collections.singletonList(value);次のJavaプログラムは、Collectionsクラスの3つのメソッドすべてを示しています。 上で議論した。
import java.util.*; public class Main { public static void main(String args()) { // empty list List list = new ArrayList(); // Instantiating list using Collections.addAll() Collections.addAll(list, 10, 20, 30, 40); // Print the list System.out.println('List with addAll() : ' + list.toString()); // Create& initialize the list using unmodifiableList method List intlist = Collections.unmodifiableList( Arrays.asList(1,3,5,7)); // Print the list System.out.println('List with unmodifiableList(): ' + intlist.toString()); // Create& initialize the list using singletonList method List strlist = Collections.singletonList('Java'); // Print the list System.out.println('List with singletonList(): ' + strlist.toString()); } }出力:

#4)Java8ストリームの使用
Java 8にストリームが導入されたことで、データのストリームを作成してリストに収集することもできます。
以下 プログラムは、ストリームを使用したリストの作成を示しています。
import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; public class Main { public static void main(String args()) { // Creating a List using toList Collectors method List list1 = Stream.of('January', 'February', 'March', 'April', 'May') .collect(Collectors.toList()); // Print the list System.out.println('List from Java 8 stream: ' + list1.toString()); } }出力:

上記のプログラムは、文字列のストリームをリストに収集して返します。 collect関数のasListとは別に、「toCollection」、「unmodizableList」などの他のCollectorsメソッドを使用することもできます。
#5)Java 9 List.of()メソッド
新しいメソッドがJava9に導入され、List.of()は任意の数の要素を受け取り、リストを作成します。作成されたリストは不変です。
import java.util.List; public class Main { public static void main(String args()) { // Create a list using List.of() List strList = List.of('Delhi', 'Mumbai', 'Kolkata'); // Print the List System.out.println('List using Java 9 List.of() : ' + strList.toString()); } }出力:

リストの例
以下に、リストインターフェイスとそのさまざまなメソッドを使用する完全な例を示します。
import java.util.*; public class Main { public static void main(String() args) { // Creating a list List intList = new ArrayList(); //add two values to the list intList.add(0, 10); intList.add(1, 20); System.out.println('The initial List:
' + intList); // Creating another list List cp_list = new ArrayList(); cp_list.add(30); cp_list.add(40); cp_list.add(50); // add list cp_list to intList from index 2 intList.addAll(2, cp_list); System.out.println('List after adding another list at index 2:
'+ intList); // Removes element from index 0 intList.remove(0); System.out.println('List after removing element at index 0:
' + intList); // Replace value of last element intList.set(3, 60); System.out.println('List after replacing the value of last element:
' + intList); } } 出力:

上記のプログラム出力は、ArrayListで実行されるさまざまな操作を示しています。まず、リストを作成して初期化します。次に、別のリストの内容をこのリストにコピーし、リストから要素を削除します。最後に、リストの最後の要素を別の値に置き換えます。
次のチュートリアルでは、リストメソッドについて詳しく説明します。
リストの印刷
リストの要素をJavaで印刷するために使用できるさまざまな方法があります。
ここでいくつかの方法について説明しましょう。
#1)Forループの使用/拡張Forループ
このリストは、インデックスを使用してアクセスできる順序付けられたコレクションです。インデックスを使用して反復するために使用されるforループを使用して、リストの各要素を出力できます。
Javaには、リストの各要素にアクセスして印刷するためにも使用できる、拡張forループとして知られている別のバージョンのforループがあります。
以下に示すJavaプログラムは forループと拡張forループを使用したリストコンテンツの印刷。
import java.util.List; import java.util.ArrayList; import java.util.Arrays; class Main{ public static void main (String() args) { //string list List list = Arrays.asList('Java', 'Python', 'C++', 'C', 'Ruby'); //print list using for loop System.out.println('List contents using for loop:'); for (int i = 0; i 出力:

#2)toStringメソッドの使用
リストインターフェイスのメソッド「toString()」は、リストの文字列表現を返します。
以下のプログラム toString()メソッドの使用法を示します。
import java.util.List; import java.util.ArrayList; class Main{ public static void main (String() args){ //initialize a string list List list = new ArrayList(){{add('Python');add('C++');add('Java');}}; // string representation of list using toString method System.out.println('List contents using toString() method:' + list.toString()); } } 出力:

配列に変換されたリスト
リストには、リストを配列に変換するメソッドtoArray()があります。配列に変換されると、それぞれのトピックで説明されている配列メソッドを使用して、この配列の内容を出力できます。 forまたは拡張forループ、さらにはtoStringメソッドを使用できます。
以下の例 toStringメソッドを使用して配列の内容を出力します。
import java.util.*; class Main { public static void main (String() args) { //list of odd numbers List oddlist = Arrays.asList(1,3,5,7,9,11); // using List.toArray() method System.out.println('Contents of list converted to Array:'); System.out.println(Arrays.toString(oddlist.toArray())); } } 出力:

Java8ストリームの使用
ストリームはJava8で導入されました。ストリームを利用してリストをループすることができます。リストを反復処理できるラムダもあります。
以下のプログラムは リストを反復処理してその内容を表示するためのストリームの使用法。
import java.util.*; class Main{ public static void main (String() args){ //list of even numbers List evenlist = Arrays.asList(2,4,6,8,10,12,14); // print list using streams System.out.println('Contents of evenlist using streams:'); evenlist.stream().forEach(S ->System.out.print(S + ' ')); } } 出力:

UNIXで2つのファイルを比較する方法
上記の方法とは別に、リストイテレータを使用してリストを反復処理し、その内容を表示できます。以降のチュートリアルでは、リストイテレータに関する完全な記事を掲載します。
リストのリスト
Javaリストインターフェイスは「リストのリスト」をサポートします。この場合、リストの個々の要素もリストになります。これは、別のリスト内にリストを含めることができることを意味します。
この概念は、CSVファイルなどからデータを読み取る必要がある場合に非常に役立ちます。ここでは、複数のリストまたはリスト内のリストを読み取ってから、それらをメモリに保存する必要がある場合があります。この場合も、このデータを処理してファイルに書き戻す必要があります。したがって、このような状況では、リストのリストを維持してデータ処理を簡素化できます。
次のJavaプログラムは、リストのJavaリストの例を示しています。
このプログラムには、String型のリストのリストがあります。文字列型の2つの別個のリストを作成し、これらのリストに値を割り当てます。これらのリストは両方とも、addメソッドを使用してリストのリストに追加されます。
リストのリストの内容を表示するには、2つのループを使用します。外側のループ(foreach)は、リストにアクセスするリストのリストを反復処理します。 内側のforeachループは、これらの各リストの個々の文字列要素にアクセスします。
import java.util.ArrayList; import java.util.List; public class Main { public static void main(String() args) { //create list of lists List java_listOfLists = new ArrayList (); //create a language list and add elements to it ArrayList lang_list = new ArrayList(); lang_list.add('Java'); lang_list.add('C++'); //add language list to java list of list java_listOfLists.add(lang_list); //create a city list and add elements to it ArrayList city_list = new ArrayList(); city_list.add('Pune'); city_list.add('Mumbai'); //add the city list to java list of lists java_listOfLists.add(city_list); //display the contents of list of lists System.out.println('Java list of lists contents:'); java_listOfLists.forEach((list) -> //access each list { list.forEach((city)->System.out.print(city + ' ')); //each element of inner list }); } } 出力:

リストのJavaリストは小さな概念ですが、プログラムで複雑なデータを読み取る必要がある場合は特に重要です。
よくある質問
Q#1)Javaのリストとセットとは何ですか?
回答: リストは、要素の順序付けられたコレクションです。リストに重複する要素を含めることができます。
セットは注文されたコレクションではありません。セット内の要素は特定の順序で配置されていません。また、セット内の要素は一意である必要があります。重複は許可されません。
Q#2)Javaでリストはどのように機能しますか?
回答: このリストは、Collectionインターフェースから拡張されたJavaのインターフェースです。クラスArrayList、LinkedList、Stack、およびVectorは、リストインターフェイスを実装します。したがって、プログラマーはこれらのクラスを使用して、リストインターフェイスの機能を使用できます。
Q#3)JavaのArrayListとは何ですか?
回答: ArrayListは動的配列です。これはサイズ変更可能な要素のコレクションであり、リストインターフェイスを実装します。 ArrayListは、内部的に配列を使用して要素を格納します。
Q#4)リストはJavaで0または1から始まりますか?
回答: Javaのリストには、ゼロベースの整数インデックスがあります。これは、リストの最初の要素がインデックス0にあり、2番目の要素がインデックス1にあることを意味します。
Q#5)リストは注文されていますか?
回答: はい。リストは要素の順序付けられたコレクションです。この順序は、リストに新しい要素を挿入する間、保持されます。
結論
このチュートリアルでは、Javaのリストインターフェイスについて紹介しました。また、リストの作成、初期化、リストの印刷など、リストの主要な概念についても説明しました。
今後のチュートリアルでは、リストインターフェイスによって提供されるさまざまなメソッドについて説明します。また、リストオブジェクトを反復処理するために使用されるイテレータ構造についても説明します。次のチュートリアルでは、リストオブジェクトから他のデータ構造への変換について説明します。
=> すべてのJavaトレーニングシリーズを見るには、ここにアクセスしてください。
推奨読書




