关于从Java中的Map删除元素的非常简短的文章。 我们将专注于删除多个元素,而忽略了您可以使用Map.remove删除单个元素的Map.remove

以下Map将用于此帖子:

Map<Integer, String> map = new HashMap<>();
map.put(1, "value 1");
map.put(2, "value 2");
map.put(3, "value 3");
map.put(4, "value 4");
map.put(5, "value 5");

有几种删除元素的方法。 您可以手动遍历代码并将其删除:

for(Iterator<Integer> iterator = map.keySet().iterator(); iterator.hasNext(); ) {Integer key = iterator.next();if(key != 1) {iterator.remove();}
}

这是您无需访问Java 8+即可执行的操作。 从Map删除元素时,需要Iterator来防止ConcurrentModificationException

如果您确实有权使用Java(8+)的较新版本,则可以从以下选项中进行选择:

// remove by value
map.values().removeIf(value -> !value.contains("1"));
// remove by key
map.keySet().removeIf(key -> key != 1);
// remove by entry / combination of key + value
map.entrySet().removeIf(entry -> entry.getKey() != 1);

removeIfCollection可用的方法。 是的, Map本身不是Collection ,也无权访问removeIf本身。 但是,通过使用: valueskeySetentrySet ,将返回Map内容的视图。 此视图实现Collection允许在其上调用removeIf

valueskeySetentrySet返回的内容非常重要。 以下是JavaDoc的values摘录:

 * Returns a { this map. Collection} view of the values contained in * Returns a { @link Collection} view of the values contained in map.  * The collection is backed by the map, so changes to the map are  * reflected in the collection, and vice-versa.  *  * The collection supports element removal, which removes the corresponding  * mapping from the map, via the { @code Iterator.remove}, * mapping from the map, via the { Iterator.remove},  * { @code Collection.remove}, { @code removeAll},  * { @code retainAll} and { @code clear} operations. 

此JavaDoc解释说,由values返回的CollectionMap支持,并且更改CollectionMap将会改变另一个。 我认为我无法解释JavaDoc在说什么比在那儿已经写的更好的东西了。因此,我现在将不再尝试该部分。 我只显示了values的文档,但是当我说keySetentrySet也都由Map的内容作为后盾时,您可以信任我。 如果您不相信我,可以自己阅读文档。

这也使用旧版 Java版本链接回第一个示例。 该文档指定可以使用Iterator.remove 。 这是早先使用的。 此外, removeIf的实现与Iterator示例非常相似。 讨论完之后,我不妨展示一下:

default boolean removeIf(Predicate<? super E> filter) {Objects.requireNonNull(filter);boolean removed = false;final Iterator<E> each = iterator();while (each.hasNext()) {if (filter.test(each.next())) {each.remove();removed = true;}}return removed;
}

还有一点额外的东西。 但是,否则几乎是一样的。

就是这样。 除了告诉我要记住要使用以下内容之外,没有什么其他结论:使用valueskeySetentrySet将提供对removeIf访问,从而允许轻松删除Map条目。

翻译自: https://www.javacodegeeks.com/2019/03/removing-elements-map-java.html

使用Java从地图中删除元素相关推荐

  1. java使用迭代器删除元素_使用Java从地图中删除元素

    java使用迭代器删除元素 关于从Java中的Map删除元素的非常简短的文章. 我们将专注于删除多个元素,而忽略了您可以使用Map.remove删除单个元素的Map.remove . 以下Map将用于 ...

  2. java从数组中删除元素(数组的缩容)

    java从数组中删除元素(数组的缩容) 1,解决方案一 /* * 数组的缩容(删除元素) * 第一种解决方案 * 移动元素,被删除元素后面的元素往前移一位 * 优点:不需要创建新数组,省内存,速度快 ...

  3. java list循环中删除元素的坑

    背景 当我们要循环一个list中的元素,并且要删除某个元素的时候,一点要小心谨慎!其中深埋了好几个坑! 坑1 请看如下代码: /*** 测试删除集合中的空白元素*/ @Test public void ...

  4. 如何在Java中处理ConcurrentModificationException? 在循环中从ArrayList中删除元素时要当心...

    从Java中从ArrayList中删除元素时常见的问题之一是ConcurrentModificationException. 如果您对索引使用经典的for循环或增强的for循环,并尝试使用remove ...

  5. 【重难点】【Java集合 02】Set、List、Map 的区别、常见的线程安全的集合类、Collection 为什么只能在 Iterator 中删除元素

    [重难点][Java集合 02]List.Set.Map 的区别.常见的线程安全的集合类.Collection 为什么只能在 Iterator 中删除元素 文章目录 [重难点][Java集合 02]L ...

  6. java迭代器删除元素_java迭代器中删除元素的操作

    我们知道通过Iterator,可以对集合中的元素进行遍历.那么在其中遇到我们不需要的元素时,可不可以在遍历的时候顺便给删除呢?答案是当然可以.在Iterator下有一个remove函数,专门用于删除的 ...

  7. java数组中删除元素或一个数组元素

    java数组中删除元素或一个数组元素 删除数组中单个元素 删除数组中多个元素(数组表示) 这里直接介绍两种情况: 1.删除数组中单个元素 2.删除数组中多个元素(数组表示) 删除数组中单个元素 1. ...

  8. java迭代器删除元素_java迭代器中删除元素的实例操作详解

    java迭代器中删除元素的实例操作详解 2021-01-21 16:40:08 我们知道通过Iterator,可以对集合中的元素进行遍历.那么在其中遇到我们不需要的元素时,可不可以在遍历的时候顺便给删 ...

  9. java 中数组中删除元素_java数组中删除元素的操作

    我们在学习数组的开始,就明确过初始的长度是不可变化的.但是在实际的使用中,难免会涉及到对数组的改动.本篇我们带来的是在数组中删除元素的方法:remove和索引.相信这两种概念大家都不陌生,那么结合了数 ...

最新文章

  1. PyCharm vs VSCode,是时候改变你的 IDE 了!
  2. 漫画:什么是公有云、私有云和混合云?
  3. easy-mock写的一个简单的模拟二页的反馈
  4. 实用常识_实用垃圾收集,第1部分–简介
  5. java绘制流程图_如何才能更好地绘制计算机毕业设计中各种图表
  6. LeetCode 566. Reshape the Matrix
  7. gitlab 迁移_无忌过招:手把手教你搭建自己的GitLab库
  8. linux驱动编写(看门狗)
  9. delphi透明组件(控件)开发
  10. html左边导航栏点击下拉显示内容,html导航栏-简单运用display设置左拉和下拉导航栏...
  11. 国际直拨电话号码格式
  12. java泛型中T和?和有什么区别
  13. 谷歌邮箱lmap服务器填什么_google邮箱设置方法是什么?
  14. 软件测试自学网站有哪些 ?
  15. shell编写俄罗斯方块
  16. java中的加减乘除函数_16版.加减乘除功能函数java
  17. 中国石油大学(北京)-《 油层物理》第二阶段在线作业
  18. 职教云python题和答案_智慧职教云课堂APPPython程序设计题库及答案
  19. 记一次在K8s集群搭建的MySQL主从无法正常启动之数据迁移恢复实践
  20. PostgreSQL入门之基本工具+常用psql命令+show语法

热门文章

  1. 【SPFA】桐人的约会
  2. Hadoop生态hive(六)Hive QL表
  3. TCP为什么是三次握手和四次挥手
  4. Spring-SpringMVC父子容器
  5. 数据库 - 事务管理(ACID)隔离级别 事务传播行为
  6. String.format()方法的使用
  7. Auto.JS 教程
  8. 2015蓝桥杯省赛---java---B---6(加法变乘法)
  9. Ubuntu 免密登录
  10. from + size must be less than or equal to: [10000] but was [10550]