logo

Java での ArrayList の反復処理

ArrayList はの一部です コレクションフレームワーク java.util パッケージに存在します。 Java で動的配列を提供します。ただし、標準の配列よりも遅い場合がありますが、配列内で大量の操作が必要なプログラムでは役立ちます。このクラスは次の場所にあります java.util パッケージ。

Java バージョンでの導入とアップグレードにより、Java 8 からわかるように、新しいメソッドが利用できるようになりました。知覚ラムダ式とストリームの概念は、Java バージョン 8 で導入された以前は利用できませんでした。



方法:

bash if 条件
  1. for ループの使用
  2. しながら使用する
  3. for-each ループの使用
  4. イテレータの使用
  5. ラムダ式の使用 (Java8 以降のみ)
  6. 列挙インターフェイスの使用

これらの方法について説明します。これらの方法のうち、最初の 3 つの方法は単なる素朴なアプローチであり、その後の方法にはいくつかの最適化が含まれていることがすぐにわかります。ここで覚えておいてください、要素の走査が少ない間は、一般に単純なアプローチで反復する傾向があり、挿入される要素のサイズが大きい場合は最適なアプローチを使用します。上記の各アプローチを簡単にまとめてみましょう。

方法 1: for ループの使用



ジャワ
// Java program to iterate over an ArrayList // Using for loop // Importing all utility classes  import java.util.*; // Main class  class GFG {    // Main driver method   public static void main(String[] args)  {  // Creating and initializing the ArrayList  // Declaring object of integer type   List 数値 = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);  // for ループを使用して反復処理 for (int i = 0; i< numbers.size(); i++)     // Printing and display the elements in ArrayList   System.out.print(numbers.get(i) + ' ');   } }>

出力
1 2 3 4 5 6 7 8>

方法 2: while ループを使用する

ジャワ
// Java Program to Illustrate ArrayList // Using While Loop // Importing required classes import java.util.ArrayList ; // Main class public class GFG {  // Main driver method  public static void main(String[] args)  {  // Creating and initializing the ArrayList  // Declaring object of integer type  ArrayList al = 新しい ArrayList ();  // add() メソッドを使用して ArrayList に要素を追加します al.add(3);  al.add(1);  al.add(7);  al.add(20);  al.add(5);  // ステップ 1: 変数の設定と初期化 // while ループの構文に従って // 最初に int val = 0 を宣言して設定します。  // ステップ 2: 条件 // カウンタ変数が ArrayList のサイズより小さくなるまで // while (al.size()> val) { // 上記を保持する要素を出力します // 条件が true System.out.println(al .get(val));  // ステップ 3: 各反復でカウンターをインクリメントすることによる終了条件 // val++ ;  } } }>>'  
出力
3 1 7 20 5>

方法 3: for each ループを使用する

ジャワ
// Java Program to Iterate over Arraylist // using for Each loop // Importing all utility classes import java.util.*; // Main class class GFG {  // Main driver method  public static void main(String[] args)  {  // Declaring and initializing ArrayList  List 数値 = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);  // ArrayList を反復する For Each ループ for (Integer i :数値) // ArrayList の要素を出力する System.out.print(i + ' ');  } }>>

出力 方法 4: イテレータの使用



ジャワ
// Java program to iterate over an ArrayList // Using Iterator // Importing all utility classes import java.util.*; // Main class class GFG {  // Main driver method  public static void main(String[] args)  {  // Declaring and initializing ArrayList  List 数値 = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);  // Iterator を使用して ArrayList を反復する Iterator it =numbers.iterator();  // 単一の要素がリストに残るまで true を保持します // while (it.hasNext()) // ArrayList の要素を出力します System.out.print(it.next() + ' ');  } }>>

出力
1 2 3 4 5 6 7 8>

方法 5: ラムダ式の使用

ジャワ
// Java program to iterate over an arraylist // using Iterator in Java8 with Lambda Expression  // Importing all utility classes  import java.util.*; // Main class  class GFG {    // Main driver method   public static void main(String[] args)  {  // Declaring and initializing ArrayList  // Custom input elements   List 数値 = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);  // ラムダ式を使用した数値の出力 // 後で java8 で導入されるnumbers.forEach(number->System.out.println(number));  } }>>

出力
1 2 3 4 5 6 7 8>

方法 6: 列挙インターフェイスの使用

ジャワ
// Java Program to Iterate over ArrayList elements // Using Enumeration // Importing required classes import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; // Main class class GFG {  // Main driver method  public static void main(String[] args)  {  // Creating an ArrayList  ArrayList al = 新しい ArrayList ();  // ArrayList に要素を追加します al.add(34);  al.add(12);  al.add(34);  al.add(23);  al.add(54);  // 列挙オブジェクトを取得します。 e = Collections.enumeration(al);  // 要素が存在するまで while (e.hasMoreElements()) // nextElement() メソッドを使用して要素を出力 System.out.println(e.nextElement());  } }>>

出力
34 12 34 23 54>

要素を反復処理するために使用できるすべてのメソッドについて説明し終えたので、これは記事へのさらなる追加です。これまで、入力要素のみを走査してきましたが、要素を操作した場合にどうなるかを検討していません。

ジャワ
// Java program to demonstrate Working of // Iterator.remove() on Arraylist // Importing utility classes import java.util.List; import java.util.ArrayList; import java.util.Iterator; // Main class public class GFG {  // Main driver method   public static void main(String[] args)  {  // Creating a List with referenceto ArrayList  List al = 新しい ArrayList ();  al.add(10);  al.add(20);  al.add(30);  al.add(1);  al.add(2);  // Iterator.remove() を使用して 10 より小さい要素を削除します。 Iterator itr = al.iterator();  while (itr.hasNext()) { int x = (Integer)itr.next();  if (x< 10)  itr.remove();  }  System.out.println('Modified ArrayList : '  + al);  } }>

出力
Modified ArrayList : [10, 20, 30]>

トラバーサル中のアイテムの削除: 要素を反復処理するときに ArrayList.remove() を使用することはお勧めできません。これは次の原因となる可能性があります ConcurrentModificationException (参照する これ この例外を含むサンプル プログラムの場合)。要素を反復処理する場合は、次の使用をお勧めします。 Iterator.remove() 方法。