Javaのイテレーターを使用して要素を削除する方法は何ですか?
Javaの反復子を使用して要素を削除するには、次の手順に従います。
- 最初、イテレーターオブジェクトを作成し、それを操作したいコレクションと関連付けます。たとえば、ArrayListコレクションを操作する場合、次のコードを使用してイテレーターを作成できます:
- ArrayListのイテレーターを作成する:
Iterator iterator = arrayList.iterator(); - Whileループを使用してコレクション内の要素を反復処理します。ループ内で、イテレータのhasNext()メソッドを使用して次の要素がまだあるかどうかを確認し、next()メソッドを使用して現在の要素を取得できます。例えば:
- iterator.hasNext()の間、
String element = iterator.next();
// ここで削除操作を行います。 - ループ中で削除操作を行う。remove()メソッドを使用して現在の要素を削除できる。例えば:
- 次のように言い換えることができます:イテレーターを削除する。
例のコードは以下の通りです:
import java.util.ArrayList;
import java.util.Iterator;
public class IteratorExample {
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("元素1");
arrayList.add("元素2");
arrayList.add("元素3");
Iterator<String> iterator = arrayList.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
if (element.equals("元素2")) {
iterator.remove();
}
}
System.out.println(arrayList); // 输出:[元素1, 元素3]
}
}
注意:要删除元素时,请使用迭代器的remove()方法,而非直接使用集合的remove()方法。直接使用remove()方法会导致ConcurrentModificationException异常。