按类别划分java流 [英] Partition java streams in categories

查看:122
本文介绍了按类别划分java流的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个流< A> ,其中

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

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

I would like to get a map<String, list<A>>, where the original stream is partitioned into sublists based on the value of category(). It is pretty trivial to have it implemented using a for loop, but is it possible to get a more elegant solution harnessing java streams?

示例:

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

Given {[a, xyz], [a, zyx], [b, abc]}, I would like to get a map:

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


推荐答案

使用 groupingBy collector

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

这篇关于按类别划分java流的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆