今回のテーマは「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の走査が楽になりますね。
■[Javaワンポイント]内の前後の記事
↑ 第 38 回 ~ Listの範囲操作 ~
→ 第 37 回 ~ ListIterator ~
↓ 第 36 回 ~ 拡張for文とIterator ~
■更新日時での前後の記事
↑ 2月6日 お天気
→ 第 37 回 ~ ListIterator ~
↓ 2月5日 お天気
