【发布时间】:2014-05-15 15:56:00
【问题描述】:
我正在使用 ListIterator 对 ArrayList 进行迭代。我在遍历 ArrayList 时使用 ListIterator 添加和删除元素。 问题是每次我添加一个元素时,新元素也会被迭代。但我只想迭代列表中的初始元素,而不是新添加的元素。
如何做到这一点?
谢谢大家。
【问题讨论】:
-
否,插入的新元素不会被迭代。正如文档所述,“新元素插入到隐式光标之前:对 next 的后续调用将不受影响” 例如程序:
List<Integer> list = new ArrayList<>(Arrays.asList(2,1)); ListIterator<Integer> ite = list.listIterator(); while(ite.hasNext()){ if(ite.next()%2 == 0){ite.add(4);}}正确终止并输出[2,4,1]。 -
您也可以将元素添加到临时列表中,然后在循环后将其添加到原始列表中。
-
CopyOnWriteArrayList 也许?
标签: java arraylist listiterator