11

ArrayList<String>usingに要素を挿入できるようにしたいのですListIteratorが、クラスの add メソッド関連のドキュメントを読んでもなんとなく戸惑いListIterator、こんなことをしたら

for(int i = 0 ; i < list.size() ; ++i)
   listIterator.add( list.get(i) );

このコード スニペットはリスト イテレータに対して何を行いますか? リスト イテレータはどこに移動しますか?

次のコードを実行すると、「こんにちは」という結果が得られます-:

import java.util.ArrayList;
import java.util.ListIterator;

public class ListIter {
    public static void main(String[] args) {

        String[] s = {"Hi", "I", "am", "Ankit"};

        ArrayList<String> list = new ArrayList<>();
        ListIterator<String> listIterator = list.listIterator();

        for (int i = 0; i < s.length; ++i) {
            listIterator.add(s[i]);
        }

        while (listIterator.hasPrevious()) {
            listIterator.previous();
        }

        System.out.println(listIterator.next());
    }
}

この出力がどのように生成されているか教えてください。

4

3 に答える 3

17

イテレータを適切に使用していません。イテレータを使用する正しい方法は、インデックスではなくイテレータ自体でリストをトラバースすることです。

ListIterator<SomeObject> listIterator = list.listIterator();

while(listIterator.hasNext()){
  SomeObject o = listIterator.next();
  listIterator.add(new SomeObject());
}

ListIterator#add()を読む

簡単な例:

public static void main(String args []){      
        List<String> list= new ArrayList<String>();
        list.add("hi");
        list.add("whats up");
        list.add("how are you");
        list.add("bye");

        ListIterator<String> iterator = list.listIterator();
        int i=0;
        while(iterator.hasNext()){
            iterator.next();
            iterator.add(Integer.toString(i++));                
        }

        System.out.println(list);
        //output: [hi, 0, whats up, 1, how are you, 2, bye, 3]

    }
 }
于 2013-09-25T02:15:05.870 に答える