首页 > 解决方案 > 从 Map 中过滤出多个条件的结果

问题描述

我有一个包含 和 列表的empid地图name。我只想选择大于 7 且名称以 N 开头的emp name人。结果必须是 SET。id

我尝试使用map.entryset()但想不出如何在地图内部进行过滤。

我们必须使用 if else 吗?如果找到多个元素,我们将如何返回 set?

标签: javacollectionsjava-8

解决方案


应该是这样的

Set<String> selectedEmps = empIdToName.entrySet().stream()
    .filter(e -> e.getKey() > 7)
    .filter(e -> e.getValue().startsWith("N"))
    .map(Map.Entry::getValue)
    .collect(Collectors.toSet());

推荐阅读