【问题标题】:Pulling a List of Values from a Map given a List of Keys on Java 8给定 Java 8 上的键列表,从 Map 中提取值列表
【发布时间】:2018-02-01 20:43:11
【问题描述】:

我感到很尴尬,我被困在这个问题上,但我试图从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->?????)

【问题讨论】:

  • edit您的问题包括您“卡住”的代码,以及您“卡住”的代码。仅仅说“卡住”对我们来说并没有多大意义。
  • 必须用 Stream 来完成吗? Map&lt;MyEnum, String&gt; copy = new HashMap&lt;&gt;(map); copy.keySet().retainAll(fields); toReturn = new ArrayList&lt;&gt;(copy.values()); 可能会更干净。

标签: java java-8


【解决方案1】:
fields.stream()
      .map(map::get)
      .filter(Objects::nonNull)
      .collect(Collectors.toList())

【讨论】:

    猜你喜欢
    • 2013-01-15
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多