美文网首页
ConcurrentModificationException异

ConcurrentModificationException异

作者: 秋刀鱼_87c6 | 来源:发表于2018-09-18 19:58 被阅读7次

    ConcurrentModificationException异常:

        java中的Map如果在遍历过程中要删除元素,除非通过迭代器自己remove()方法,否则就会导致抛出ConcurrentModificationException异常。
    
    • 错误的遍历方式:
    public void removeBymap(){//错误的删除方式
            HashMap<Integer, String> map = new HashMap<Integer, String>();
            map.put(1, "one");
            map.put(2, "two");
            map.put(3, "three");
            System.out.println(map);
            Set<Map.Entry<Integer, String>> entries = map.entrySet();
            for(Map.Entry<Integer, String> entry : entries){
                if(entry.getKey() == 2){
                    map.remove(entry.getKey());//ConcurrentModificationException
                }
            }
            System.out.println(map);
        }
    
    • 正确的遍历方式
     public void removeByIterator(){//正确的删除方式
            HashMap<Integer, String> map = new HashMap<Integer, String>();
            map.put(1, "one");
            map.put(2, "two");
            map.put(3, "three");
            System.out.println(map);
            Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();
            while(it.hasNext()){
                Map.Entry<Integer, String> entry = it.next();
                if(entry.getKey() == 2)
                    it.remove();//使用迭代器的remove()方法删除元素
            }
            System.out.println(map);
        }
    

    相关文章

      网友评论

          本文标题:ConcurrentModificationException异

          本文链接:https://www.haomeiwen.com/subject/xhgmnftx.html