株式会社イーヴ

EeBlog(テクニカルブログ)

TOP > EeBlog > 第38回 ListIterator

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