本意是在循环hashmap的时候,根据条件,把符合条件的kv键值对给删除掉。下面是错误代码。

    private void error(Map<String, String> map1, Map<String, String> map2) { 
        Iterator<String> iterator = map1.keySet().iterator(); 
        while (iterator.hasNext()) { 
            for (String s : map2.keySet()) { 
                if (iterator.next().equals(s)){ 
                    iterator.remove(); 
                } 
            } 
        } 
    }

哎,就上面这个代码,竟然能陷入死循环。我也佩服,竟然能出现死循环,不得不佩服,道路千万条,代码不规范,错误就奇葩的一匹。下面是测试代码。

    @Test 
    public void test() { 
        Map<String, String> map1 = Maps.newHashMap(); 
        map1.put("a", "a"); 
        Map<String, String> map2 = Maps.newHashMap(); 
        error(map1, map2); 
    }

评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!