List、Map集合删除元素的正确姿势

    技术2025-11-16  5

    在阅读阿里巴巴规约的时候发现有一条规约是关于List的【不要在foreach里面进行元素的remove/add操作,remove请使用Iterator方式】。

    原因

    关键点就是因为每次list.size()都会重新计算长度才会导致问题出现 正确姿势: for (Iterator<Map.Entry<String, String>> it = aMap.entrySet().iterator(); it.hasNext();){ Map.Entry<String, String> item = it.next(); if(item.getValue()==null) { it.remove(); } } jdk1.8之后可使用removeIf,这里根上面是一样效果 m1.entrySet().removeIf(item -> item.getValue() == null); list同样有removeIf方法
    Processed: 0.010, SQL: 10