0

我编写了以下代码以使用 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 将元素添加到这个空列表中,然后在添加所有元素之后,我想将迭代器移动到列表的开头,并且我还希望能够删除迭代器指向的元素,出于某种原因我的方法似乎不起作用,请帮助。

4

2 回答 2

2

也许我不理解你的问题,但看起来你真的很想拥有......

list.add(tokens[i]);

代替...

listIterator.add(tokens[i]);
于 2013-09-26T01:01:09.537 回答
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());
    }
于 2013-09-26T01:22:39.627 回答