Liste zur Karte Liste mit Java-Streams

ds2799:

Ich habe eine Klasse Unternehmen

public class Company {

    private String companyid;

    private List<Employee> employees;
}

Welche wird in One2Many Beziehung zu Mitarbeiterbezogenen

public class Employee {

    private String employeeId;

    private Company company;

}

Ich bin mit einer Liste von Mitarbeitern geliefert und ich möchte eine Karte erzeugen , wie Map<companyId, List<Employee>>Java - Streams mit , wie es performant sein muss.

employees.stream().collect(
                  Collectors.groupingBy(Employee::getCompany, HashMap::new, Collectors.toCollection(ArrayList::new));

Aber das Problem ist, ich nicht so etwas wie Mitarbeiter :: getCompany () aufgerufen werden kann. GetCompanyId ()

Wie kann ich das machen. Alle Vorschläge sind willkommen

Sie waren:

Verwenden einer Lambda-Ausdruck anstelle eines Verfahrens Referenz:

Map<String,List<Employee> output =
    employees.stream()
             .collect(Collectors.groupingBy(e -> e.getCompany().getCompanyId(), 
                                            HashMap::new, 
                                            Collectors.toCollection(ArrayList::new)));

Oder einfach:

Map<String,List<Employee> output =
    employees.stream()
             .collect(Collectors.groupingBy(e -> e.getCompany().getCompanyId()));

Ich denke du magst

Origin http://10.200.1.11:23101/article/api/json?id=389878&siteId=1
Empfohlen
Rangfolge