Java8 中map中删除元素的简单方法
传统的,在JAVA中得MAP中删除元素,可以这样,假设有个MAP:
Map<Integer, String> map = new HashMap<>();
map.put(1,
"value 1"
);
map.put(2,
"value 2"
);
map.put(3,
"value 3"
);
1 2 3 4 5 6 | for (Iterator<Integer> iterator = map.keySet().iterator(); iterator.hasNext(); ) { Integer key = iterator.next(); if (key != 1 ) { iterator.remove(); } } |
而在JAVA8中,可以这样了,更为简单:
1 2 3 4 5 6 | // 根据map中得值去判断删除 map.values().removeIf(value -> !value.contains( "1" )); // 根据key删除 map.keySet().removeIf(key -> key != 1 ); //通过getkey()方法获得值去删除 map.entrySet().removeIf(entry -> entry.getKey() != 1 ); |
MAP本身没办法用removeif,要通过keySet,EntrySet去调用removeif方法,再看源码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | /** * 移除集合中满足给定条件的所有元素,错误或者运行时异常发生在迭代时或者把条件传递给调用者的时候。 * * @implSpec * 默认的实现贯穿了使用迭代器iterator的集合的所有元素。每一个匹配的元素都将被用Iterator接口中的 * remove()方法移除。如果集合的迭代器不支持移除,则在第一次匹配时就会抛出异常 UnsupportedOperationException * * @param filter 令元素移除成功的条件 * @return {@code true} 如果所有的元素都被移除 * @throws NullPointerException 如果有一个过滤器是空的 * @throws UnsupportedOperationException 如果元素不能被从该集合中移除。如果一个匹配元素不能被移除, * 通常来说,它就不支持移除操作,这时可能抛出这个异常。 * @since 1.8 */ 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; } |
也可以这样用:
1 2 3 4 5 6 7 8 9 10 11 12 | public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add( "a" ); list.add( "b" ); list.add( "c" ); list.add( "d" ); // 这里单独定义了过滤 Predicate<String> predicate = (s) -> s.equals( "a" ); // 过滤掉a的元素 list.removeIf(predicate); System.out.println(list.toString()); } |
分类:
Java8
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具