【发布时间】:2016-09-14 20:50:38
【问题描述】:
ArrayList<String> list = new ArrayList<String>();
list.add("test");
while(list.listIterator().hasNext()) {
System.out.println(list.listIterator().next());
}
这会生成带有“test”的行的无限循环。为什么会发生这种情况以及如何解决?
【问题讨论】:
-
您在每个循环步骤生成一个新的迭代器,因此它始终是全新的并且您的列表包含一个项目,
hasNext()始终返回true。 -
您也可以在使用 for 循环时在一行中执行此操作:
for (ListIterator<String> it = list.listIterator(); it.hasNext();) { /* looped code */ },将迭代器的范围限制为该循环。
标签: java arraylist infinite-loop listiterator