Java教程

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

本文主要是介绍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);
            }
        }
这篇关于java 循环删除hashmap中的键值对,解决java.util.ConcurrentModificationException报错的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!