java - java并发修改异常,我想我这里不能使用迭代器吗?

标签 java exception concurrentmodification

我有一个列表,需要迭代并删除某些项目。我无法使用迭代器,因为我需要为每个项目调用方法(例如 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/

相关文章:

java - 使用 HttpServletRequest#getDateHeader() 解析 RFC1123 日期时出现异常

java - 从包含 3 个 float 的传感器中解析字符串

java - Java RabbitMQ 客户端中的ConfirmListener是否必须同步?

Java指针异常

java - 修改多个 Map 时避免 ConcurrentModificationException

java - 如何避免 JFileChooser.setFileFilter() 调用中的 ConcurrentModificationException?

java - boolean 表达式应该在运行时在计时器中评估,对 swing gui 中的变化使用react

c++ - 递归如何针对 try catch block 工作?

java - 正在使用的远程方法调用端口

java - 在迭代中避免不必要的 ConcurrentModificationException