zoukankan      html  css  js  c++  java
  • 踩坑记录(java)-双层增强for调用remove(obj)报错 java.util.ConcurrentModificationException(并发修改异常)

    • 错误代码
         for (TbUserMessage n : newMessages) {
                for (TbUserMessage o : oldMessage) {
                    if (n.getMessageId().equals(o.getMessageId()) || n.getUserId().equals(o.getUserId())) {
                        newMessages.remove(n);
                    }
                }
            }

      2层增强for嵌套remove(obj)会报ConcurrentModificationException 具体原因自行百度

    • 解决办法

      使用普通for 使用下标删除,至于其他方法,网上说法不一。

         for (int i = 0; i < newMessages.size(); i++) {
                for (int j = 0; j < oldMessage.size(); j++) {
                    if (newMessages.get(i).getMessageId().equals(oldMessage.get(j).getMessageId()) && newMessages.get(i).getUserId().equals(oldMessage.get(j).getUserId())) {
                        newMessages.remove(i);
                //另 网上一位前辈会在此处将i的下标自减 因为我在测试时并没有发现问题 所以此处没有用
                //i--;
    } } }
  • 相关阅读:
    Unity学习
    C#文件操作
    Unity3D XLua热更新流程
    Unity编辑器扩展
    Unity性能优化
    Unity热更新 xLua
    Unity热更新 AssetBundle
    Quickcocos从安装到打包
    EasyTouch5插件使用 EasyTouch手势检测功能
    PHP CURL HTTPS内存泄露问题
  • 原文地址:https://www.cnblogs.com/wangshilei/p/13331525.html
Copyright © 2011-2022 走看看