java 循环删除hashmap中的键值对,解决java.util.ConcurrentModificationException报错

示例

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class DeleteHashMap {
    
    
    public static void main(String[] args) {
    
    
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        map.put("a", 1);
        map.put("b", 0);
        map.put("c", 1);
        map.put("d", 0);
        map.put("e", 1);
        
        // 开始处理数据
        for (Iterator<Map.Entry<String, Integer>> it = map.entrySet().iterator(); it.hasNext(); ) {
    
    
            Map.Entry<String, Integer> item = it.next();
            String key = item.getKey();

			// 这里是删除的条件
            int val = item.getValue();
            if (val == 0 || key.equals("a")) {
    
    //删除key为a 或 值为0的数据
                it.remove(); // 删除
            }
        }
        
        //看一下结果
        System.out.println(map);
    }
}

如果使用如下代码会报错:Exception in thread "main" java.util.ConcurrentModificationException

		for (Map.Entry<String, Integer> item : map.entrySet()) {
    
     // todo 测试结果
            String key = item.getKey();
            int val = item.getValue();
            if (val == 0 || key.equals("a")) {
    
    
                map.remove(key);
            }
        }

Guess you like

Origin blog.csdn.net/weixin_35757704/article/details/121429735