我有这段代码,我正在使用迭代器遍历 ArrayList,例如:
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Element element = iterator.next();
iterator.remove();
handle(element)
}
其中“句柄(元素元素)”如下所示:
ListIterator iterator = list.listiterator();
iterator.add(element);
现在这给出了一个 ConcurrentModificationException,因为iterator
第一个方法中的 没有用新添加的元素更新。
我目前已经使用CopyOnWriteArrayList解决了这个问题,但是这些对于性能来说非常昂贵。有没有更好的方法来解决这个问题?
提前致谢!
(注意:这个例子没有任何意义,只是为了说明我所面临的)
我将尝试解释我为什么这样做:
我的主类中有一个需要执行的“命令”列表
我有一个 while 循环(示例中的代码 1),它遍历这些命令并一个接一个地执行它们,同时在从列表中执行时将它们删除。
在执行命令时,该命令可以依次将新命令添加到保存在我的主类中的列表中。(这实际上有点复杂:处理命令要求客户端做出响应,而客户端又会用命令响应,并且该命令将被添加到保存的列表中)。