我有一个订单列表,我希望用户使用Java 8 stream 和 Collectors.groupingBy 对它们进行分组:
orderList.stream().collect(Collectors.groupingBy(order -> order.getUser())
返回包含用户和订单列表的地图:
Map<User, List<Order>>
我不需要整个对象用户只是用户名的字段,这是 String ,所以我希望得到这样的内容:
Map<String, List<Order>>
我尝试使用 Stream.map 将用户映射到用户名字段,但无法正确使用。我怎样才能尽可能简单地做到这一点?
答案 0 :(得分:12)
您可以将groupingBy
收集器与username
一起使用,而不是整个User
对象:
orderList.stream().collect(Collectors.groupingBy(order -> order.getUser().getUsername())