使用Java从地图中删除元素
关于从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);
removeIf
是Collection
可用的方法。 是的, Map
本身不是Collection
,也无权访问removeIf
本身。 但是,通过使用: values
, keySet
或entrySet
,将返回Map
内容的视图。 此视图实现Collection
允许在其上调用removeIf
。
由values
, keySet
和entrySet
返回的内容非常重要。 以下是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
返回的Collection
由Map
支持,并且更改Collection
或Map
将会改变另一个。 我认为我无法解释JavaDoc在说什么比在那儿已经写的更好的东西了。因此,我现在将不再尝试该部分。 我只显示了values
的文档,但是当我说keySet
和entrySet
也都由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;
}
还有一点额外的东西。 但是,否则几乎是一样的。
就是这样。 除了告诉我要记住要使用以下内容之外,没有什么其他结论:使用values
, keySet
或entrySet
将提供对removeIf
访问,从而允许轻松删除Map
条目。
翻译自: https://www.javacodegeeks.com/2019/03/removing-elements-map-java.html
使用Java从地图中删除元素相关推荐
- java使用迭代器删除元素_使用Java从地图中删除元素
java使用迭代器删除元素 关于从Java中的Map删除元素的非常简短的文章. 我们将专注于删除多个元素,而忽略了您可以使用Map.remove删除单个元素的Map.remove . 以下Map将用于 ...
- java从数组中删除元素(数组的缩容)
java从数组中删除元素(数组的缩容) 1,解决方案一 /* * 数组的缩容(删除元素) * 第一种解决方案 * 移动元素,被删除元素后面的元素往前移一位 * 优点:不需要创建新数组,省内存,速度快 ...
- java list循环中删除元素的坑
背景 当我们要循环一个list中的元素,并且要删除某个元素的时候,一点要小心谨慎!其中深埋了好几个坑! 坑1 请看如下代码: /*** 测试删除集合中的空白元素*/ @Test public void ...
- 如何在Java中处理ConcurrentModificationException? 在循环中从ArrayList中删除元素时要当心...
从Java中从ArrayList中删除元素时常见的问题之一是ConcurrentModificationException. 如果您对索引使用经典的for循环或增强的for循环,并尝试使用remove ...
- 【重难点】【Java集合 02】Set、List、Map 的区别、常见的线程安全的集合类、Collection 为什么只能在 Iterator 中删除元素
[重难点][Java集合 02]List.Set.Map 的区别.常见的线程安全的集合类.Collection 为什么只能在 Iterator 中删除元素 文章目录 [重难点][Java集合 02]L ...
- java迭代器删除元素_java迭代器中删除元素的操作
我们知道通过Iterator,可以对集合中的元素进行遍历.那么在其中遇到我们不需要的元素时,可不可以在遍历的时候顺便给删除呢?答案是当然可以.在Iterator下有一个remove函数,专门用于删除的 ...
- java数组中删除元素或一个数组元素
java数组中删除元素或一个数组元素 删除数组中单个元素 删除数组中多个元素(数组表示) 这里直接介绍两种情况: 1.删除数组中单个元素 2.删除数组中多个元素(数组表示) 删除数组中单个元素 1. ...
- java迭代器删除元素_java迭代器中删除元素的实例操作详解
java迭代器中删除元素的实例操作详解 2021-01-21 16:40:08 我们知道通过Iterator,可以对集合中的元素进行遍历.那么在其中遇到我们不需要的元素时,可不可以在遍历的时候顺便给删 ...
- java 中数组中删除元素_java数组中删除元素的操作
我们在学习数组的开始,就明确过初始的长度是不可变化的.但是在实际的使用中,难免会涉及到对数组的改动.本篇我们带来的是在数组中删除元素的方法:remove和索引.相信这两种概念大家都不陌生,那么结合了数 ...
最新文章
- PyCharm vs VSCode,是时候改变你的 IDE 了!
- 漫画:什么是公有云、私有云和混合云?
- easy-mock写的一个简单的模拟二页的反馈
- 实用常识_实用垃圾收集,第1部分–简介
- java绘制流程图_如何才能更好地绘制计算机毕业设计中各种图表
- LeetCode 566. Reshape the Matrix
- gitlab 迁移_无忌过招:手把手教你搭建自己的GitLab库
- linux驱动编写(看门狗)
- delphi透明组件(控件)开发
- html左边导航栏点击下拉显示内容,html导航栏-简单运用display设置左拉和下拉导航栏...
- 国际直拨电话号码格式
- java泛型中T和?和有什么区别
- 谷歌邮箱lmap服务器填什么_google邮箱设置方法是什么?
- 软件测试自学网站有哪些 ?
- shell编写俄罗斯方块
- java中的加减乘除函数_16版.加减乘除功能函数java
- 中国石油大学(北京)-《 油层物理》第二阶段在线作业
- 职教云python题和答案_智慧职教云课堂APPPython程序设计题库及答案
- 记一次在K8s集群搭建的MySQL主从无法正常启动之数据迁移恢复实践
- PostgreSQL入门之基本工具+常用psql命令+show语法
热门文章
- 【SPFA】桐人的约会
- Hadoop生态hive(六)Hive QL表
- TCP为什么是三次握手和四次挥手
- Spring-SpringMVC父子容器
- 数据库 - 事务管理(ACID)隔离级别 事务传播行为
- String.format()方法的使用
- Auto.JS 教程
- 2015蓝桥杯省赛---java---B---6(加法变乘法)
- Ubuntu 免密登录
- from + size must be less than or equal to: [10000] but was [10550]