Java 8流和列表分组

Jon*_*nes 3 java java-8 java-stream collectors

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

orderList.stream().collect(Collectors.groupingBy(order -> order.getUser())
Run Code Online (Sandbox Code Playgroud)

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

Map<User, List<Order>>
Run Code Online (Sandbox Code Playgroud)

我不需要整个对象的用户只是一个IT领域的用户名是一个字符串,所以我想是这样的:

Map<String, List<Order>>
Run Code Online (Sandbox Code Playgroud)

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

Leo*_*eon 12

您可以使用groupingBy收集器username而不是整个User对象:

orderList.stream().collect(Collectors.groupingBy(order -> order.getUser().getUsername())
Run Code Online (Sandbox Code Playgroud)