Java Streams:通过内部地图键获取值分组
发布时间:2020-12-14 05:14:26 所属栏目:Java 来源:网络整理
导读:我有Map A,Map B,C并且我想要获得地图 B,列表 C从它使用 Java Streams. 我试图这样做: public A,B,C MapB,ListC groupsByInnerKey(MapA,MapB,C input) { return input.values() .stream() .flatMap(it - it.entrySet().stream()) .collect(Collectors.group
我有Map< A,Map< B,C>>并且我想要获得地图< B,列表< C>>从它使用
Java Streams.
我试图这样做: public <A,B,C> Map<B,List<C>> groupsByInnerKey(Map<A,Map<B,C>> input) { return input.values() .stream() .flatMap(it -> it.entrySet().stream()) .collect(Collectors.groupingBy(Map.Entry::getKey)); } 我期待什么 > flatMap给出一个Stream of Stream.Entry< B,C> 但是它没有编译,从字面上来说:
在最后一行的Map.Entry :: getKey. 有人可以解释什么是错误的,什么是正确的方式实现我想要的? 解决方法
您的Stream由Map.Entry对象组成,但希望您收集的实际上是条目的值,而不是条目本身.使用您当前的代码,您将获得一个Map< B,List< Map.Entry< B>>>>>.
因此,您只是想要调用 public <A,C>> input) { return input.values() .stream() .flatMap(it -> it.entrySet().stream()) .collect(Collectors.groupingBy( Map.Entry::getKey,Collectors.mapping(Map.Entry::getValue,Collectors.toList()) )); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |