可能的重复:
Java:在迭代期间向集合添加元素 https://stackoverflow.com/questions/993025/java-adding-elements-to-a-collection-during-iteration
我的问题是,我想在迭代列表时用新元素扩展列表,并且希望迭代器继续处理我刚刚添加的元素。
据我了解ListIterator.add()
在列表中当前元素之前而不是之后添加一个元素。是否可以通过其他方式实现这一目标?
在使用以下方法迭代集合时,您无法修改集合Iterator
, 除了Iterator.remove()
.
但是,如果您使用listIterator() http://docs.oracle.com/javase/7/docs/api/java/util/List.html#listIterator%28%29方法,它返回一个ListIterator
,并迭代您有更多选项可以修改。来自 javadocadd()
:
新元素插入到隐式游标之前:...后续调用previous()
将返回新元素
鉴于此,此代码应该可以将新元素设置为迭代中的下一个元素:
ListIterator<T> i;
i.add(e);
i.previous(); // returns e
i.previous(); // returns element before e, and e will be next
除非列表开始迭代为空,否则这将起作用,在这种情况下将没有先前的元素。如果这是一个问题,您将必须维护某种标志来指示这种边缘情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)