Iterator(反復子)とは、配列やそれに類似するデータ構造の各要素に対する繰り返し処理の抽象化である。java.util.Iteratorインタフェースはコレクションの反復子であり、コレクションの要素をひとつずつ順番に処理するために用いられる。
java.util.Iteratorインタフェースには、次のメソッドが含まれる。
| メソッド | 説明 |
|---|---|
| entrySet | マップに含まれるマップのSetビューを返す。 |
| keySet | マップに含まれるキーのSetビューを返す。 |
remove |
コレクションから要素を削除する。 |
イテレータで現在指している(直前に next() で取得した)要素をコレクションから削除する。
remove メソッドを呼び出すには、以下に示す条件がある。
next() を呼び出す必要がある。next() を一回呼ぶごとに remove() を一回だけ呼び出せる。コレクションから要素を削除する例を次に示す。
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
numbers.add(4);
// イテレータの取得
Iterator<Integer> it = numbers.iterator();
while (it.hasNext()) {
Integer num = it.next(); // 次の要素を取得(必須)
if (num % 2 == 0) {
it.remove(); // 現在の要素を安全に削除
}
}
System.out.println(numbers); // 出力: [1, 3]
}
}
Iterator インタフェースを使用した for ループの例を次に示す。
package com.segakuin.example;
import java.util.ArrayList;
import java.util.Iterator;
public class IteratorSample {
public static void main(String[] args) {
ArrayList<String> array = new ArrayList<String>();
array.add("first");
array.add("second");
array.add("third");
for (Iterator<String> i = array.iterator(); i.hasNext(); ) {
System.out.println(i.next());
}
}
}