Java 8 只映射到值类型集合

标签 java lambda java-8 collectors

我想转换我的 Map <K,V>只变成一个Set <V> .我在任何地方都找不到任何示例,包括 Oracle 的文档: https://docs.oracle.com/javase/tutorial/collections/streams/reduction.html 我能更进一步的是:

myMap.entrySet().parallelStream().
                filter((entry) -> entry.getKey().startsWith("a"))
                .collect(Collectors.toSet());

这将返回一组 Map.Entry .在这个例子中它是 Map<String, String>所以我只希望它返回值位(字符串),我试过.collect(Collectors.toSet(HashMap::getValue))但这没有用。那么我在这里缺少什么?

最佳答案

您必须再添加一步才能映射到值:

myMap.entrySet().parallelStream()
            .filter(entry -> entry.getKey().startsWith("a"))
            .map(entry -> entry.getValue())
            .collect(Collectors.toSet());

关于Java 8 只映射到值类型集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30849025/

相关文章:

javascript - 从 Javascript 代码中删除大量 for 循环

java-8 - 如果您不知道 Java 8 中迭代的确切次数,如何停止无限流

java-8 - 从 lambda 返回非本地?

java - Spring Hibernate Validator 一步步检查

c++ - 无法将 std::bind 与可变模板参数一起使用

java - 请求中缺少 token

lambda - 对 let 到 lambda 的转换感到困惑

Java 8 流 - 将方法传递给过滤器

在 JBoss 上使用 Liferay 时出现 Java 垃圾收集问题 : GC executed many times

java - SimpleDateFormat 无法正确处理凌晨 12 点