在Java中如何对Map进行条件筛选

使用stream API可对map按key、value或两者同时筛选,返回符合条件的新Map,例如通过Filter结合Collectors.toMap实现,且不修改原Map。

在Java中如何对Map进行条件筛选

Java中对Map进行条件筛选,通常可以通过Stream API结合过滤条件来实现。你可以根据key、value或两者同时进行筛选,最终得到符合条件的新Map。

按Value进行筛选

如果想根据Map的value进行筛选,比如找出所有值大于10的条目:

 Map<String, Integer> map = new HashMap<>(); map.put("a", 5); map.put("b", 15); map.put("c", 20);  Map<String, Integer> filtered = map.entrySet()     .stream()     .filter(entry -> entry.getValue() > 10)     .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));  // 结果:{b=15, c=20} 

按Key进行筛选

若要根据key的条件筛选,例如只保留key为”a”或”b”的项:

在Java中如何对Map进行条件筛选

标书对比王

标书对比王是一款标书查重工具,支持多份投标文件两两相互比对,重复内容高亮标记,可快速定位重复内容原文所在位置,并可导出比对报告。

在Java中如何对Map进行条件筛选12

查看详情 在Java中如何对Map进行条件筛选

 Map<String, Integer> filtered = map.entrySet()     .stream()     .filter(entry -> Arrays.asList("a", "b").contains(entry.getKey()))     .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); 

同时按Key和Value筛选

可以组合多个条件,比如key包含某个字符且value满足某条件:

立即学习Java免费学习笔记(深入)”;

 Map<String, Integer> filtered = map.entrySet()     .stream()     .filter(entry -> entry.getKey().startsWith("b") && entry.getValue() < 100)     .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); 

注意:如果原始Map有NULL值或筛选后出现重复key,可能需要处理异常或使用第三个参数指定合并策略,如:

 .collect(Collectors.toMap(..., ..., (v1, v2) -> v1)) 

提示:使用Stream不会修改原Map,返回的是新Map。适合处理不可变场景。如果数据量小,传统for循环也可行,但Stream更简洁易读。 基本上就这些。

暂无评论

发送评论 编辑评论


				
上一篇
下一篇
text=ZqhQzanResources