我遇到了这段代码,它在迭代时从列表中删除了项目,但它并没有抛出并发异常并在列表中留下了一些项目。
这是为什么?
例子:。
public class Application {
public static void main(String[] args) {
List<Integer> integerList = new ArrayList<Integer>();
integerList.add(1);
integerList.add(2);
for (Integer integer : integerList) {
removeInteger(integerList, integer);
}
System.out.println(integerList.toString()); // prints [2] as it was not removed (while it should be)
}
private static void removeInteger(List<Integer> integerList, Integer integer) {
for (Integer integer1 : integerList) {
if (integer.equals(integer1)) {
int index = integerList.indexOf(integer);
if (index >= 0) {
integerList.remove(index);
}
}
}
}
}
如果我将removeInteger方法更改为 useIterator而不是main我传递的副本,则integerList一切都按预期工作。
holdtom
相关分类