我有一个列表,需要迭代并删除某些项目。我无法使用迭代器,因为我需要为每个项目调用方法(例如 ls.getStatus()
),而该方法不适用于迭代器。如果ls.getStatus() == 0
我需要删除该项目。我怎样才能避免 ConcurrentModificationException
?
for (MyList ls : list) {
if (ls.getStatus() == 0) {
ls.run();
list.remove();
} else {
ls.create();
}
}
谢谢
最佳答案
你为什么不认为可以使用迭代器?
Iterator<MyList> i = list.iterator();
while (i.hasNext()) {
MyList ls = i.next();
//... all your other code which uses ls...
i.remove();
}
这种方法也可能会更快,因为使用 iterator.remove()
可以避免在列表中搜索项目,而这是 list.remove(item)< 所必需的
.
关于java - java并发修改异常,我想我这里不能使用迭代器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9352550/