将 Set<V> 转换为 Map<String, Set<String>

我有以下收藏:


Set<Map.Entry<Event, Long>> entries

歌唱活动:


public class Event{

    private long epoch; 

    private List<Pair<String, String> eventParams; 

}

我想将条目集合转换为Map<String, Set<String>>


例子:


List<Pair<String, String> eventParams = Arrays.asList(Pair.of("abc","123"), Pair.of("abc","456"));

转换后的集合:


Map<String, Set<String>> converted = ["abc", ["123", "456"]]

我尝试了以下操作:


entries.stream().flatMap(x -> x.getKey().getEventParams().stream())

            .collect(Collectors.groupingBy(Pair::getKey, Collectors.toSet(Pair::getValue)));

但是,我收到错误:无法应用收集器中的 toSet。


这样做的正确方法是什么?


MMTTMM
浏览 147回答 1
1回答

哈士奇WWW

代替Collectors.toSet(Pair::getValue)和Collectors.mapping(Pair::getValue, Collectors.toSet())问题是它Collectors.toSet()没有任何参数,它对输入流定义的类型进行操作。Collectors.mapping(mapper, downstream)通过“在累积之前将映射函数应用于每个输入元素”来改变此行为。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java