有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

lambda Java 8仅映射到值类型集合

我想把我的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)),但没有成功。那我还缺什么


共 (1) 个答案

  1. # 1 楼答案

    您必须再添加一个步骤来映射到值:

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