zoukankan      html  css  js  c++  java
  • 出现 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"));
    }
  • 相关阅读:
    开始几天的基本学习
    从这个博客开始我的机器学习深度学习之路
    剑指Offer:面试题3——二维数组中的查找(java实现)
    HIVE配置文件
    C++ 之旅:前言
    leetcode 349:两个数组的交集I
    python学习(三):matplotlib学习
    python学习(二):python基本语法
    Android环境搭建
    LeetCode:237
  • 原文地址:https://www.cnblogs.com/error404/p/2263671.html
Copyright © 2011-2022 走看看