在Java 8中,如何从Map中根据键列表获取值列表?

5

我感到有些尴尬,因为我卡在这个问题上了,但我正在尝试从给定的Map<MyEnum,String>中提取字符串列表(List<String>),该列表由枚举键List<MyEnum> 给出。 List<MyEnum> 可能包含条目,也可能不包含。

编辑:

List<String> toReturn = new ArrayList<>();

for (MyEnum field : fields) {
    String value = null;
    if ((value = map.get(field)) != null) {
       toReturn.add(value);
    }
}
return toReturn;

但是我正在寻找一种Java 8的方法来实现这个。比如说...

map.stream().map(e->?????)

3
请编辑您的问题,包括您所卡住的代码以及卡住的地方。仅仅说"卡住了"对我们来说意义不大。 - azurefrog
2
必须使用Stream吗?Map<MyEnum, String> copy = new HashMap<>(map); copy.keySet().retainAll(fields); toReturn = new ArrayList<>(copy.values());可能更简洁。 - VGR
1个回答

7
fields.stream()
      .map(map::get)
      .filter(Objects::nonNull)
      .collect(Collectors.toList())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接