zoukankan      html  css  js  c++  java
  • java——删除HashMap中所有的键值对

    第一种:❌(报错)

    import java.util.HashMap;
    import java.util.Set;
    
    public class T{
        public static void main(String[] args) {
            HashMap<String, String> userContents = new HashMap<>();
            userContents.put("a", "1");
            userContents.put("b","2");
            Set<String> keys = userContents.keySet();
            System.out.println(keys);
            for(String key : keys){
                userContents.remove(key);
            }
        }
    }

    异常:java.util.ConcurrentModificationException

    具体没有深入研究,“同时修改异常”,迭代器是不能这样做的。

    第二种:(迭代器)

    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    
    public class T{
        public static void main(String[] args) {
            HashMap<String, String> userContents = new HashMap<>();
            userContents.put("a", "1");
            userContents.put("c","3");
            userContents.put("asas", "asaq");
            userContents.put("aaa","33");
            System.out.println("before : " + userContents);
            for(Iterator<Map.Entry<String, String>> it = userContents.entrySet().iterator() ; it.hasNext();){
                Map.Entry<String, String> item = it.next();
                it.remove();
            }
            System.out.println("after : " + userContents);
        }
    }

    很神奇的是,必须要有item这个变量保存it.next(),虽然 item并没有被用到,但如果删掉这句话就会报错:java.lang.IllegalStateException。

    说是删除这行代码的话,指针找不到下一个节点,emmm 不太懂迭代器的具体原理...

  • 相关阅读:
    dp,路径保存,最大公共上升子序列——ZOJ
    简单dp——HDU
    扫描线,线段树,离散化——HDU
    c++版本的opencv3.4.1里分类器输出值异常
    win10家庭版openssh连接远程服务器显示connetion reset
    生活感悟一
    Teradata简介
    kettle 无法正常启动问题
    kettle实现同构单表增量同步
    kettle数据库连接使用变量
  • 原文地址:https://www.cnblogs.com/gaoquanquan/p/10187148.html
Copyright © 2011-2022 走看看