2016-06-14 16 views
3

Ich habe eine Liste von Aufträgen und ich möchte gruppieren sie durch den Benutzer mit Hilfe von Java 8 Stream und Collectors.groupingBy:Java 8 Strom und Gruppierung der Liste

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

Diese geben eine Karte Benutzer enthält und die Liste der Aufträge:

Map<User, List<Order>> 

ich brauche nicht die gesamte Objekt Benutzer nur ein Feld davon Benutzername, die eine Str ing, so möchte ich, so etwas bekommen:

Map<String, List<Order>> 

ich den Benutzer auf dem Benutzernamen Feld abzubilden versucht Stream.map verwenden, aber kann es nicht richtig machen. Wie kann ich das so einfach wie möglich machen?

Antwort

11

Sie können einfach verwenden, um die groupingBy Kollektor mit dem username anstelle des gesamten User Objekt:

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

Dank, weiß nicht, wie ich verpasst, dass – Jones

+0

so einfach war lol –