这个问题是对Partition java streams in categories
的一种跟进我有stream<A>
,其中
class A {
String category();
String data();
}
我想获得map<String, list<String>>
,其中原始流根据category()
的值被划分为子列表,然后映射到仅提取data()
。使用for循环实现它是非常简单的,但是是否有可能获得利用java流的更优雅的解决方案?
实施例
鉴于{[a, xyz], [a, zyx], [b, abc]}
,我想获得一张地图:
a -> {xyz, zyx}
b -> {abc}
答案 0 :(得分:8)
您需要略有不同的groupBy
stream.collect(Collectors.groupingBy(A::getCategory,
Collectors.mapping(A::data, Collectors.toList()));