【发布时间】:2019-01-08 19:48:03
【问题描述】:
如何使用 Java 8 过滤器过滤 Map<String, List<Employee>>?
只有当列表中的任何员工具有字段值Gender = "M" 时,我才需要过滤。
输入:Map<String,List<Employee>>
输出:Map<String,List<Employee>>
过滤条件:Employee.genter = "M"
如果列表在映射值上为空,我还必须过滤掉输出映射(或过滤映射[过滤后得到的新映射])中的键
【问题讨论】:
-
您要过滤地图条目还是只过滤每个列表中性别为
M的员工? -
input.entrySet().stream().filter(entry -> entry.getValue().getGender().equals("M").......
-
请添加更多细节:过滤器是什么意思(删除/保留有/没有 M 的员工或删除/保留至少有/只有一个员工有/没有 M 的列表)?原图可以修改吗?
map.values().forEach(list->list.removeIf(...))还不够吗?添加示例输入和输出以阐明过滤器的含义可能会有所帮助。如果您添加自己想要改进的工作代码会更好。
标签: java java-8 java-stream filtering