logo

Java でリストを反復処理する

Java のリストを使用すると、オブジェクトの順序付けられたコレクションを維持できます。 Java では、null 要素だけでなく重複要素も List に格納できます。 List インターフェイスは、 java.util パッケージであり、Collection インターフェイスを継承します。挿入順序は保持されます。

Java で List を反復処理する方法はいくつかあります。それらについては以下で説明します。



方法:

  1. ループの使用 (素朴なアプローチ)
  2. 使用する イテレーター
  3. 使用する リスト反復子
  4. ラムダ式の使用
  5. 使用する stream.forEach()
  6. 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 実装の特性に応じて)