Java Iterator(イテレータ)

Java 集合框架Java コレクションフレームワーク

Javaイテレータ(Iterator)は、Javaコレクションフレームワークにおけるメカニズムの一つで、コレクション(リスト、セット、マップなど)を走査するためのインターフェースです。

コレクションの要素にアクセスする統一的な方法を提供し、基盤となるコレクションの具体的な実装の詳細を知る必要はありません。

Javaイテレータ(Iterator)はコレクションではなく、コレクションにアクセスするための方法であり、反復処理に使用できますArrayListとHashSetなどのコレクション。

IteratorはJavaイテレータの最も単純な実装であり、ListIteratorはCollection APIのインターフェースで、Iteratorインターフェースを拡張しています。

イテレータインターフェースはいくつかのメソッドを定義していますが、最もよく使用されるのは次の3つです:

  • next()- イテレータの次の要素を返し、イテレータのポインタを次の位置に移動します。

  • hasNext()- コレクションにまだアクセスできる次の要素があるかどうかを判定するために使用されます。

  • remove()- コレクションからイテレータが最後にアクセスした要素を削除します(オプション操作)。

Iterator クラスは java.util パッケージにあります。使用する前にインポートする必要があります。構文は次のとおりです:

import java.util.Iterator; // 引入 Iterator 类

イテレータを使用することで、従来の for ループやインデックスを使わずに、コレクション内の要素に1つずつアクセスできます。この方法はより簡潔で柔軟であり、さまざまな種類のコレクションに適用できます。

イテレータを取得する

コレクションからイテレータを取得するには、iterator() メソッドを使用できます:

例

// ArrayList と Iterator クラスをインポートする
import java.util.ArrayList;
import java.util.Iterator;

public class サンプルTest {
    public static void main(String[] args) {

        // コレクションを作成
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("サンプル");
        sites.add("Taobao");
        sites.add("Zhihu");

        // イテレータを取得
        Iterator<String> it = sites.iterator();

        // コレクションの最初の要素を出力
        System.out.println(it.next());
    }
}

上記のコードを実行すると、出力結果は次のとおりです:

Google

イテレータを使用してコレクションを走査するとき、走査中にコレクションを変更(要素の追加や削除など)すると、ConcurrentModificationException 例外が発生する可能性があります。この問題を回避するには、イテレータ自体のremove()メソッドを使用して削除操作を行います。

コレクションの要素をループする

イテレータ it にコレクション内のすべての要素を1つずつ返させる最も簡単な方法は、while ループを使用することです:

while(it.hasNext()) {
    System.out.println(it.next());
}

以下は、コレクション sites 内のすべての要素を出力します:

例

// ArrayList と Iterator クラスをインポートする
import java.util.ArrayList;
import java.util.Iterator;

public class サンプルTest {
    public static void main(String[] args) {

        // コレクションを作成
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("サンプル");
        sites.add("Taobao");
        sites.add("Zhihu");

        // イテレータを取得
        Iterator<String> it = sites.iterator();

        // コレクション内のすべての要素を出力
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

上記のコードを実行すると、出力結果は次のとおりです:

Google
サンプル
Taobao
Zhihu

要素を削除する

コレクション内の要素を削除するには、remove() メソッドを使用できます。

次の例では、コレクション内の 10 未満の要素を削除します:

例

// ArrayList と Iterator クラスをインポートする
import java.util.ArrayList;
import java.util.Iterator;

public class サンプルTest {
    public static void main(String[] args) {
        ArrayList<Integer> numbers = new ArrayList<Integer>();
        numbers.add(12);
        numbers.add(8);
        numbers.add(2);
        numbers.add(23);
        Iterator<Integer> it = numbers.iterator();
        while(it.hasNext()) {
            Integer i = it.next();
            if(i < 10) {  
                it.remove();  // 10 未満の要素を削除
            }
        }
        System.out.println(numbers);
    }
}

上記のコードを実行すると、出力結果は次のとおりです:

[12, 23]

注意:Java イテレータは一方向の走査メカニズムであり、つまりコレクション内の要素を前から後ろへしか走査できず、後戻りすることはできません。また、イテレータを使用してコレクションを走査する際、コレクション内の要素を直接変更することはできず、代わりにイテレータの remove() メソッドを使用して現在の要素を削除する必要があります。

Java 集合框架Java コレクションフレームワーク

その他の拡張機能