为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

MMTTMM 2023-08-23 14:41:01
我有以下收藏: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。这样做的正确方法是什么?
查看完整描述

1 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

代替

Collectors.toSet(Pair::getValue)

Collectors.mapping(Pair::getValue, Collectors.toSet())

问题是它Collectors.toSet()没有任何参数,它对输入流定义的类型进行操作。Collectors.mapping(mapper, downstream)通过“在累积之前将映射函数应用于每个输入元素”来改变此行为。


查看完整回答
反对 回复 2023-08-23
  • 1 回答
  • 0 关注
  • 145 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信