首页 > 其他分享 >Map遍历删除元素的几种方法(转载)

Map遍历删除元素的几种方法(转载)

时间:2023-11-28 13:58:20浏览次数:24  
标签:Map 遍历 iterator 删除 map entrySet put 转载

https://blog.csdn.net/kangbin825/article/details/134090875

方法一:笨方法,遍历,找出key再删除

遍历map, 找出需要删除的key放在集合中, 然后再删除, 代码如下:

public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("a", 1);
        map.put("b", 2);
        map.put("c", 3);
        map.put("d", 4);
        List<String> toRemoveKeys = new ArrayList<>();
        for (Map.Entry<String, Integer> e : map.entrySet()) {
            if (e.getValue() % 2 == 0) {
                toRemoveKeys.add(e.getKey());
            }
        }
        toRemoveKeys.forEach(map::remove);
    } 

方法二:entrySet

虽然Map没有迭代,但是它的entrySet有啊,所以我们可以通过它来实现遍历删除。这个可能是我们经常使用的方法:

    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("a", 1);
        map.put("b", 2);
        map.put("c", 3);
        map.put("d", 4);
        Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();

        Map.Entry<String, Integer> entry;
        while (iterator.hasNext()) { 
            entry = iterator.next();
            if (entry.getValue() % 2 == 0){
                iterator.remove(); 
            }
        }
        System.out.println(map);
    }

方法三:jdk8 removeIf方法

到jdk8之后,针对容器提供了很多简洁的操作方式,迭代删除这方面可以说更加简单了,仅需一行代码:

    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>(); 
        map.put("a", 1);
        map.put("b", 2);
        map.put("c", 3);
        map.put("d", 4);
        map.entrySet().removeIf(entry -> entry.getValue() % 2 == 0);
    }

总结 :

  • 和list删除元素一样,不要在for或foreach迭代过程中删除数据,如有需要,可以使用迭代器entrySet.Iterator或者jdk8 的removeIf流式写法。

标签:Map,遍历,iterator,删除,map,entrySet,put,转载
From: https://www.cnblogs.com/xupeixuan/p/17861783.html

相关文章

  • 集合框架(一) Java中Map的常见方法的使用及循环的五种方式
    Map是Java中的一种集合,它是一种键值对的映射表,可以根据键快速获取对应的值。@[toc]##1.常见使用方式以下是Java中Map的常见方法使用示例及运行结果:###1.1存储键值对使用put()方法向Map中添加键值对:```javaMap<String,Integer>map=newHashMap<>();map.put("apple",10......
  • 面试官:为什么阿里不推荐使用 keySet() 遍历 HashMap?太叼钻了吧。。
    来源:https://juejin.cn/post/7295353579002396726Part1引言HashMap相信所有学Java的都一定不会感到陌生,作为一个非常重用且非常实用的Java提供的容器,它在我们的代码里面随处可见。因此遍历操作也是我们经常会使用到的。HashMap的遍历方式现如今有非常多种:使用迭代器(Iterator)......
  • 大数据从入门到实战 - 第3章 MapReduce基础实战——信息挖掘 - 挖掘父子关系
    输出一直顺序不正确,把正确答案和我自己写的混了混,目前感觉是mapper的问题正确输出:grand_childgrand_parentMarkJesseMarkAlicePhilipJessePhilipAliceJoneJesseJoneAliceStevenJesseStevenAliceStevenFrankStevenMaryJo......
  • DFS算法的非递归遍历分析
    两种写法,一个是边表顶点号全部压栈,一个是类似后序非递归遍历1、voidDFS(GraphG,inti){intp,w;StackS;InitStack(S);Push(S,i);visited[i]=true;while(!isEmpty(S)){Pop(S,p);printf("%d",G.Ver[p].num);......
  • Java——Map.getOrDefault方法和MapUtils.getXXX()详解
    在Java编程中,Map是一种非常常用的数据结构。Map通常用于存储键值对,其中每个键映射到一个值。当我们尝试访问一个不存在的键时,Map会返回null值。这在某些情况下可能会导致错误,因此Java8引入了一个新的方法getOrDefault(),该方法可用于解决这个问题。getOrDefault()方法的语法如下:该......
  • Map和模糊查询
    Map在UserDao接口中intAddUser2(Map<String,Object>map);UserMapper.xml<insertid="AddUser2"parameterType="map">insertintouser.use1(id,name,pwd)values(#{UserId},#{UserName},#{password});</insert>......
  • Word 转PDF图片不清晰解决方法【转载】
    Word转PDF图片不清晰解决方法Word转PDF图片不清晰解决方法-知乎(zhihu.com) word转pdf不失真方法(文字、公式、图表、格式)-知乎(zhihu.com)Word中编辑的内容由于打印等需求,经常需要将其转换为PDF格式,在此过程中部分图片可能出现清晰度降低,图片模糊等现象。以......
  • java集合框架(一)Map的常见使用及循环的五中方式
    Map循环遍历的五种方法先使用Map方法定义数据Mapmap=newHashMap();map.put(0,"张三");map.put(1,"李四");map.put(2,"王五"); 1.通过key的set集合进行遍历,然后通过key来取map的valueSetset=map.keySet();for(Object......
  • go map的坑
    range时不能动态的增加map的range范围golang的map是hash表实现的,hash表的遍历就是遍历所有的桶,所以新添加的元素可能出现在之前遍历过的桶中,这样就会有些新添加的元素可能遍历不到。实际生成环境中,不建议遍历一个正在写入的map,这并不是一种好的设计,如果确实有这样的需求,要特别注......
  • HashMap中怎么处理桶冲突?
    一、关键词HashMap桶冲突二:知识点--两种方法:1).闭散列法: 若桶的key经过hash算法计算得到的映射仇重复,则把这个value放置在距离原本位置最近的下一个空的映射地址中,需要保持负载因子(=已存储个数/空间大小)大于一定的值(数组法)。2).开散列法: 经过hash计算得到的桶映射相同,则......