按类别划分和映射java流

时间:2017-04-25 12:04:46

标签: java java-8 java-stream

这个问题是对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}

1 个答案:

答案 0 :(得分:8)

您需要略有不同的groupBy

  stream.collect(Collectors.groupingBy(A::getCategory, 
         Collectors.mapping(A::data, Collectors.toList()));