如何使用ListIterator将元素添加到空列表?

时间:2013-09-26 00:35:56

标签: java list data-structures iterator

我编写了以下内容,使用ListIterator将元素添加到空列表中:

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

public void append(String... tokens) {

        if(tokens == null)
            return;

        // append tokens at the end of the stream using the list iterator
        for(int i = 0 ; i < tokens.length ; ++i){

            // if the token is not null we append it 
            if(tokens[i] != null && !tokens[i].equals(""))
                listIterator.add(tokens[i]);
        }

        reset();
    }

我想使用listIterator向这个空列表中添加元素,然后在添加我想将迭代器移动到列表开头的所有元素后,我还希望能够删除迭代器指向的元素,出于某种原因,我的方法似乎不起作用,请帮助。

2 个答案:

答案 0 :(得分:2)

也许我不理解你的问题,但似乎你真的想拥有......

list.add(tokens[i]);

而不是......

listIterator.add(tokens[i]);

答案 1 :(得分:0)

完成向迭代器添加项目后,获取迭代器的新实例并重新启动。应该做什么的reset()方法呢?

除非修改要循环的列表,否则不会得到ConcurrentModificationException。

也许这就是你要找的东西。

    ArrayList<String> list = new ArrayList<String>();
    ListIterator<String> listIterator = list.listIterator();
    String[] tokens = {"test", "test1", "test2"};

    // append tokens at the end of the stream using the list iterator
    for (int i = 0; i < tokens.length; ++i) {

        // if the token is not null we append it
        if (tokens[i] != null && !tokens[i].equals(""))
            listIterator.add(tokens[i]);
    }

    while (listIterator.hasPrevious()) {
        if(listIterator.previous().toString().equals("test1")) {
            listIterator.remove();
        }
    }

    while (listIterator.hasNext()) {
        System.out.println(listIterator.next().toString());
    }