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

在Java中对Map进行条件筛选,通常可以通过Stream API结合过滤条件来实现。你可以根据key、value或两者同时进行筛选,最终得到符合条件的新Map。
如果想根据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为"a"或"b"的项:
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满足某条件:
立即学习“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))
以上就是在Java中如何对Map进行条件筛选的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号