Java のリストを使用すると、オブジェクトの順序付けられたコレクションを維持できます。 Java では、null 要素だけでなく重複要素も List に格納できます。 List インターフェイスは、 java.util パッケージであり、Collection インターフェイスを継承します。挿入順序は保持されます。
Java で List を反復処理する方法はいくつかあります。それらについては以下で説明します。
方法:
- ループの使用 (素朴なアプローチ)
- 使用する イテレーター
- 使用する リスト反復子
- ラムダ式の使用
- 使用する stream.forEach()
- Spliterator の使用 (Java 8 以降)
方法 1-A: 単純な for ループ
各要素には、単純な for ループを使用した反復によってアクセスできます。インデックスをループ変数として使用してインデックスにアクセスできます。
構文:
for (i = 0; i>
以下にこの方法の例を示します。
C# サンプルコードジャワ
// Java Program to iterate over List // Using simple for loop // Importing all classes of // java.util package import java.util.*; // CLass class GFG { // Main driver method public static void main(String args[]) { // Creating a ArrayList ListmyList = 新しい ArrayList(); // リストへの要素の追加 // カスタム入力 myList.add('A'); myList.add('B'); myList.add('C'); myList.add('D'); // List を反復するための For ループ for (int i = 0; i< myList.size(); i++) { // Print all elements of List System.out.println(myList.get(i)); } } }> 出力
A B C D>
上記のメソッドの複雑さ:
時間計算量: O(n)。「n」はリストのサイズです。
補助スペース: O(1)、ループ変数 (この場合は i) には定数スペースが使用されます。
方法 1-B: 拡張された for ループ
各要素には、拡張された for ループを使用した反復によってアクセスできます。このループは J2SE 5.0 で導入されました。 for ループを走査する別のアプローチです。コードが読みやすくなります。
構文:
for(data_type variable : List_name) { // Body of the loop. // Each element can be accessed using variable. }>以下にこのメソッドの例を示します。
ジャワ // Java Program to Iterate over a List // using enhanced for loop (for-each) // Importing all classes of // java.util package import java.util.*; // Class class GFG { // Main driver method public static void main(String args[]) { // Creating an Arraylist ListmyList = 新しい ArrayList(); // リストへの要素の追加 // カスタム入力 myList.add('A'); myList.add('B'); myList.add('C'); myList.add('D'); // 拡張された for ループ(for-each) を反復に使用します for (String i : myList) { // ArrayList のすべての要素を出力します System.out.println(i); } } }>>'
出力 A B C D>
上記のメソッドの複雑さ:
時間計算量: O(n)。「n」はリストのサイズです。
補助スペース: O(1)、ループ変数 (この場合は i) には定数スペースが使用されます。
方法 1-C: while ループを使用する
リストの反復処理は、while ループを使用して実現することもできます。ループ内のコード ブロックは、条件が true になるまで実行されます。ループ変数は次のように使用できます。 の 各要素にアクセスするためのインデックス。
構文:
// Java Program to iterate over a List // using while loop // Importing all classes of // java.util package import java.util.*; // Class class GFG { // Main driver method public static void main(String args[]) { // Creating an ArrayList ListmyList = 新しい ArrayList(); // リストへの要素の追加 // カスタム入力 myList.add('A'); myList.add('B'); myList.add('C'); myList.add('D'); // 変数を 0 に初期化します int i = 0; // 変数の値が // リストのサイズを示す値より小さい場合 while (i< myList.size()) { // Print element of list System.out.println(myList.get(i)); // Increase variable count by 1 i++; } } }> 出力
A B C D>
上記のメソッドの複雑さ:
マイクロサービスのチュートリアル
時間計算量: O(n)。「n」はリストのサイズです。
補助スペース : O(1)、ループ変数 (この場合は i) には定数スペースが使用されます。
方法 2: イテレータを使用する
イテレータは、コレクションの要素を反復処理できるようにする Java のオブジェクトです。リスト内の各要素には、while ループを備えた反復子を使用してアクセスできます。
構文:
Iterator variable = list_name.iterator();>
以下にこのメソッドの例を示します。
ジャワ // Java Program to iterate over the list // using iterator // Importing all classes of // java.util package import java.util.*; // Class class GFG { // Main driver method public static void main(String args[]) { // Creating an ArrayList ListmyList = 新しい ArrayList(); // リストへの要素の追加 // カスタム入力 myList.add('A'); myList.add('B'); myList.add('C'); myList.add('D'); // イテレータ イテレータそれ = myList.iterator(); // リスト内の要素の条件チェック // hasNext() メソッドを使用して、 // リスト内に 1 つの要素が存在するまで true を返します while (it.hasNext()) { // リストのすべての要素を出力します System.out.println(it 。次()); } } }>>' 出力
A B C D>
上記のメソッドの複雑さ:
時間計算量: O(n)。「n」はリストのサイズです。
補助スペース: O(1)、ループ変数 (この場合は i) には定数スペースが使用されます。
方法 3: リスト反復子の使用
ListIterator は、バージョン 1.2 以降で使用できる Java のイテレータです。これにより、List 実装されたオブジェクトから要素を 1 つずつ繰り返すことができます。 while ループを使用してリストを反復処理するために使用されます。
構文:
// Java program to iterate over a list // using ListIterator import java.util.*; // Class class GFG { // Main driver method public static void main(String args[]) { // Creating an ArrayList ListmyList = 新しい ArrayList(); // リストへの要素の追加 // カスタム入力 myList.add('A'); myList.add('B'); myList.add('C'); myList.add('D'); // リストイテレータ ListIteratorそれ = myList.listIterator(); // リスト内に要素があるかどうかの条件チェック // リスト内に 1 つの要素が存在するまで true を保持する hasNext() を使用します。 while (it.hasNext()) { // リストのすべての要素を出力します System.out.println( it.next()); } } }>>' 出力
A B C D>
上記のメソッドの複雑さ:
時間計算量: O(n)。「n」はリストのサイズです。
補助スペース: O(1)、ループ変数 (この場合は i) には定数スペースが使用されます。
方法 4: Iterable.forEach() を使用する
この機能は Java 8 以降で利用可能です。リストの反復処理にも使用できます。反復は次を使用して実行できます ある ラムダ式。
構文:
// Java Program to iterate over a List // using forEach() // Importing all classes of // java.util method import java.util.*; // Class class GFG { // Main driver method public static void main(String args[]) { // Creating an ArrayList ListmyList = 新しい ArrayList(); // リストへの要素の追加 // カスタム入力 myList.add('A'); myList.add('B'); myList.add('C'); myList.add('D'); // リスト内のすべての要素を出力するラムダ式 myList.forEach( (temp) -> { System.out.println(temp); }); } }>> 出力
A B C D>
上記のメソッドの複雑さ:
時間計算量: O(n)。「n」はリストのサイズです。
補助スペース: O(1)、ループ変数 (この場合は i) には定数スペースが使用されます。Java プログラミング言語のチュートリアル
方法 5: Stream.forEach() を使用する
stream().forEach() の処理順序は未定義ですが、forEach() の場合は定義されています。どちらもリストを反復処理するために使用できます。
構文:
list_name.stream.forEach(variable->{//コードのブロック})>>以下にこのメソッドの例を示します。
ジャワ // Java Program iterating over a List // using stream.forEach() method // Importing all classes of // java.util method import java.util.*; // Class class GFG { // Main driver method public static void main(String args[]) { // Creating an ArrayList ListmyList = 新しい ArrayList(); // リストへの要素の追加 // カスタム入力 myList.add('A'); myList.add('B'); myList.add('C'); myList.add('D'); // stream.forEach() メソッドは // リスト内のすべての要素を出力します myList.stream().forEach( (temp) -> System.out.println(temp)); } }>> 出力
A B C D>
上記のメソッドの複雑さ:
時間計算量: O(n)。「n」はリストのサイズです。
補助スペース: O(1)、ループ変数 (この場合は i) には定数スペースが使用されます。
方法 6: Spliterator の使用 (Java 8 以降)
Java 8 では、 スプリッテレーター インターフェイス。分割イテレータの略です。これにより、より並列しやすい方法で要素を反復処理する方法が提供されます。 Spliterator は、リストなどのコレクションを含むさまざまなソースから取得できます。 Spliterator の forEachRemaining メソッドは、残りのすべての要素を順番に走査するために使用されます。
構文:
Spliterator spliterator = myList.spliterator();>
以下にこのメソッドの例を示します。
ジャワ // Java Program iterating over a List // using Spliterator import java.util.List; import java.util.Spliterator; public class ListIteration { public static void main(String[] args) { // List of String ListmyList = List.of('A', 'B', 'C','D'); // スプリッテレータの使用 スプリッテレータスプリッテレータ = myList.spliterator(); スプリッテレータ.forEachRemaining(System.out::println); } }>> 出力
A B C D>
上記のメソッドの複雑さ:
時間計算量: O(n)。「n」はリストのサイズです。
補助スペース: O(log n) または O(1) (Spliterator 実装の特性に応じて)