【Java】遍历 Map 时删除 Map 中元素

这篇具有很好参考价值的文章主要介绍了【Java】遍历 Map 时删除 Map 中元素。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

https://blog.csdn.net/LSKCGH/article/details/97521668
https://www.jianshu.com/p/a3b3aae6697c

不能直接在 Map 的 for 循环中使用 remove 方法,会抛出 ConcurrentModificationException 异常,应使用迭代器中的 remove 方法删除元素。

以下代码运行时会抛出 ConcurrentModificationException:

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

public class Test {
    public static void main(String[] args) {
        Map<Integer, Integer> map = new HashMap<>();
        //初始化map
        for (int i = 0; i < 10; i++) {
            map.put(i, i);
        }
        for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
            if (entry.getKey() == 1) {
                map.remove(entry.getKey());
            }
            System.out.println(entry.getKey() + " " + entry.getValue());
        }
    }
}

解决方案如下:

示例1:

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

public class Test {
    public static void main(String[] args) {
        Map<Integer, Integer> map = new HashMap<>();
        //初始化map
        for (int i = 0; i < 10; i++) {
            map.put(i, i);
        }
        Iterator<Map.Entry<Integer, Integer>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<Integer, Integer> next = iterator.next();
            int key = next.getKey();
            int value = next.getValue();
            if (key == 1) {
                iterator.remove();
            }
            System.out.println(key + " " + value);
        }
    }
}

示例2:文章来源地址https://www.toymoban.com/news/detail-596629.html

import java.util.*;

public class Test {
    public static void main(String[] args) {
        Map<String, Map<String, Long>> appIdChannelAgg = new HashMap<String, Map<String, Long>>() {{
            put("saf0", new HashMap<String, Long>() {{
                put("10", 454L);
            }});
            put("saf1", new HashMap<String, Long>() {{
                put("11", 454L);
            }});
            put("saf2", new HashMap<String, Long>() {{
                put("12", 454L);
            }});
        }};
        List<String> hzList = Arrays.asList("fas", "dfa", "saf0");
        Iterator<String> iterator = appIdChannelAgg.keySet().iterator();
        while (iterator.hasNext()) {
            String appId = iterator.next();
            if (!hzList.contains(appId)) {
                iterator.remove();
            }
        }
        System.out.println(appIdChannelAgg);
    }
}

到了这里,关于【Java】遍历 Map 时删除 Map 中元素的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java基础】Map遍历的5种方式

    创建一个集合 方式一:Iterator 迭代器遍历 map.entrySet().iterator(); map.keySet().iterator(); 方式二:For Each方式遍历 map.forEach(BiConsumer action) 方式三:获取Collection集合 map.values().forEach() 方式四:增强for遍历map map.entrySet().for map.keySet().for 方法五:Stream流遍历 map.entrySet().stream().forEach() m

    2024年02月09日
    浏览(41)
  • Java如何遍历Map对象集合(多种方式)6种方式

    今天比昨天,更优秀 Map简介 Map是用于保存具有映射关系的数据,保存两组值,key和value,这两组值可以是任何应用类型的数据。 Map典型的实现类是HashMap、Hashtable(HashMap子类还有LinkedHashMap)、SortedMap子接口及实现类TreeMap、WeakHashMap、IndentityHashMap等 Map遍历第一种 注意:如果

    2024年02月08日
    浏览(34)
  • 进阶JAVA篇- Map 系列集合的遍历方法与常用API

    目录         1.0 Map 集合的说明         1.1 Map 集合的常用方法         1.2 Map 系列集合的特点         2.0 Map 系列集合的遍历方法(三种方法)          2.1 使用 keySet() 方法遍历         2.2 使用 entrySet() 方法遍历         2.3 使用 forEach() 方法遍历(Java 8+)  

    2024年02月08日
    浏览(40)
  • <List<Map<String,String>>> 删除元素常见的误区以及删除方法

    看到这么标题可能觉得这个真是太easy了,不就remove吗,分分钟搞定。 但结果却出乎意料,下面我们来j简单说说list删除数据可能遇到的坑: 先说明我们可能会遇到的两个问题: 1.java.lang.IndexOutOfBoundsException(索引越界) 2.java.util.ConcurrentModificationException(并发修改异常) 开始测试

    2024年02月12日
    浏览(34)
  • <List<Map<String,String>>> 删除元素常见的误区

    看到这么标题可能觉得这个真是太easy了,不就remove吗,分分钟搞定。 但结果却出乎意料,下面我们来j简单说说list删除数据可能遇到的坑: 先说明我们可能会遇到的两个问题: 1.java.lang.IndexOutOfBoundsException(索引越界) 2.java.util.ConcurrentModificationException(并发修改异常) 开始测试

    2024年02月12日
    浏览(30)
  • 使用java8 新特性stream流对List<Map<String, Object>>集合进行遍历、过滤、查询、去重、排序、分组

    对于一个ListMapString, Object类型的数据,可以使用Java 8的新特性stream流来进行遍历、过滤、查询、去重、排序、分组等操作。 遍历: 过滤: 查询: 去重: 排序: 分组:

    2024年02月10日
    浏览(47)
  • js遍历map(js遍历map对象)

    var map = new HashMap(); map.put(a,1); map.put(b,2); 遍历: var key = map.keySet(); for (var i in key){  alert(map.get(key[i])); } 注:js 中使用map,要先导入一个HashMap.js文件  没要求,引入这个文件之后,可以直接使用hashmap了var map = {\\\'a\\\': \\\'aaaaa\\\',\\\'b\\\': \\\'bbbbb\\\'};for(var k in map){alert(map[k]);}可以使用

    2023年04月26日
    浏览(27)
  • 【Java 基础篇】Java Map 详解

    在Java的集合框架中, Map 接口用于存储键值对,提供了一种基于键进行查找和操作的数据结构。 Map 接口的实现类提供了丰富的方法来操作键值对,例如添加、删除、更新和查找。本文将详细介绍Java中的 Map 接口及其常见实现类,包括 HashMap 、 TreeMap 和 LinkedHashMap ,并提供一

    2024年02月11日
    浏览(34)
  • Java中 Map转List 、 List转Map 简单好用

    输出: 输出: 所以说这两个方法的区别就是在 new ArrayList 时选择使用 map.values() 还是 map.keySet() 输出: 要特别注意里面的 (v1, v2) - v1) 必须带上。如果你的key里重复的时候没这句话会异常: java.lang.IllegalStateException: Duplicate key 0 (v1, v2) - v1 表示当出现重复的键时,选择保留原始

    2024年02月16日
    浏览(34)
  • Java Map中Value值的排序(利用Map统计次数)

    引起我思考Java中Map排序问题,是来源于 LeetCode 501. 二叉搜索树中的众数。 这道题要求根据一棵给定的二叉搜索树,在树中找出结点中出现次数最多的那个值,且不唯一。换句话说,也就是在树中搜索众数,且不唯一。 看到这道题时,首先就想到要遍历整棵树中的每个结点,

    2024年02月02日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包