第38回 ListIterator
今回のテーマは「ListIterator」です。
ListインターフェースはIteratorより高機能なListIteratorを使用できます。 従来のIteratorはコレクションを先頭から走査することしかできませんが、ListIteratorは最後の要素から先頭に向かって走査することができます。 また走査中に要素の追加や変更を行ったり、要素の位置を取得することができます。
では、サンプルでListIteratorを使ってみましょう。
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class Main {
public static void main(String[] args) {
List<Integer> sampleList = new ArrayList<Integer>();
for (int i = 0; i < 20; i++) {
sampleList.add(i + 1);
}
System.out.println(sampleList);
// リストを後方から走査
for (ListIterator<Integer> it = sampleList.listIterator(sampleList.size());
it.hasPrevious();) {
Integer element = it.previous();
System.out.println("テスト中の要素の位置:" + it.nextIndex());
if (element % 2 == 0) {
// 要素を追加
it.add(-1);
} else if (element % 3 == 0) {
// 要素を削除
it.remove();
} else if (element % 5 == 0) {
// 要素を変更
it.set(10);
}
}
System.out.println(sampleList);
}
}
これでListの走査が楽になりますね。

