第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の走査が楽になりますね。