• 出现 java.util.ConcurrentModificationException 时的解决办法


    for (int i=0; i<list.size(); i++) {  // 只有在这种方式遍历集合时,同时对集合增加、删除才不会影响。

      // list.remove(list.get(i));  

    }

    在对一个map进行迭代遍历并删除一些符合条件的键值对的时候,容易出现 

    java.util.ConcurrentModificationException 这个异常。
    Exception in thread "main" java.util.ConcurrentModificationException
    at java.util.HashMap$HashIterator.nextEntry(HashMap.java:787)
    at java.util.HashMap$KeyIterator.next(HashMap.java:823)

    解决办法如下:

    import java.util.*;

    public class TestMap {
    public TestMap() {
    }

    public static void main(String[] args) {
    java.util.Map m = new java.util.HashMap();
    m.put("aaa", "lizongbo ");
    m.put("bbb", " lizongbo");
    m.put("ccc", "lizongbo ");
    m.put("ddd", " lizongbo");
    m.put("eee", "lizongbo");
    m.put("fff", "lizongbo");
    m.put("ggg", "lizongbo");
    m.put("adads", "lizongbo");
    m.put("dffd", "lizongbo");
    m.put("dcxv", "lizongbo");
    m.put("lizongbo", "lizongbo");
    m.put("ert", "lizongbo");
    m.put("544", "lizongbo ");
    Iterator iterator = m.keySet().iterator();
    while (iterator.hasNext()) {
    String sessionId = (String) iterator.next();
    if ("ggg".equals(sessionId) || "lizongbo".equals(sessionId) ||
    "544".equals(sessionId)) {
    iterator.remove(); //这行代码是关键。
    m.remove(sessionId);
    }
    }
    System.out.println(m.get("ggg"));
    System.out.println(m.get("lizongbo"));
    System.out.println(m.get("544"));
    }
  • 相关阅读:
    正则化--L1正则化(稀疏性正则化)
    机器学习分类算法之随机森林
    机器学习分类算法之逻辑回归
    机器学习分类算法之朴素贝叶斯
    机器学习分类算法之K近邻(K-Nearest Neighbor)
    机器学习之特征工程
    uwsgi支持http长链接
    机器学习之数据预处理
    机器学习之场景解析
    机器学习之基本概念
  • 原文地址:https://www.cnblogs.com/error404/p/2263671.html
Copyright © 2020-2023  润新知