Java 8仅映射到值类型集合

Sar*_*aya 1 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());
Run Code Online (Sandbox Code Playgroud)

这将返回一组Map.Entry.在这个例子中它是Map<String, String>这样我只希望它返回值bit(String),我已经尝试过.collect(Collectors.toSet(HashMap::getValue))但是没有用.那我在这里错过了什么?

Tag*_*eev 5

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

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