Java 8流和列表分组

时间:2016-06-14 14:57:27

标签: java java-8 java-stream collectors

我有一个订单列表,我希望用户使用Java 8 stream Collectors.groupingBy 对它们进行分组:

orderList.stream().collect(Collectors.groupingBy(order -> order.getUser())

返回包含用户和订单列表的地图:

Map<User, List<Order>>

我不需要整个对象用户只是用户名的字段,这是 String ,所以我希望得到这样的内容:

Map<String, List<Order>>

我尝试使用 Stream.map 将用户映射到用户名字段,但无法正确使用。我怎样才能尽可能简单地做到这一点?

1 个答案:

答案 0 :(得分:12)

您可以将groupingBy收集器与username一起使用,而不是整个User对象:

orderList.stream().collect(Collectors.groupingBy(order -> order.getUser().getUsername())