按类别划分java流

时间:2017-04-25 11:22:41

标签: java java-8 java-stream

我有stream<A>,其中

class A {
  String category();
  // ...
}

我想得到一个map<String, list<A>>,其中原始流根据category()的值被划分为子列表。使用for循环实现它是非常简单的,但是是否有可能获得利用java流的更优雅的解决方案?

实施例

鉴于{[a, xyz], [a, zyx], [b, abc]},我想获得一张地图:

a -> {[a, xyz], [a, zyx]}
b -> {[b, abc]}

1 个答案:

答案 0 :(得分:11)

使用groupingBy collector

stream.collect(Collectors.groupingBy(A::category));