概念:两种类型A
和B
,每种都可以映射到另一种类型的多个元素。
假设我有一个输入列表:List<A> aList
,如何使用Java 8流生成地图Map<B, List<A>> result
?
Map<B, List<A>> result = aList.stream().flatMap(a -> a.getBs().stream().map(b -> new Tuple2<>(b, a)) // just create pairs of (B, A) for each a
.collect(Collectors.groupingBy(???)); // then group these pairs by b
或者Guava或Apache Comms会提供这样的功能吗?
谢谢!
更新
感谢@Tukani,请查看this post以获得答案。