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