Lista de mapa de la lista utilizando las corrientes de Java

ds2799:

Tengo una empresa de clase

public class Company {

    private String companyid;

    private List<Employee> employees;
}

Que se relaciona con los empleados en relación One2Many

public class Employee {

    private String employeeId;

    private Company company;

}

Estoy suministra con una lista de empleados y yo quiero generar un mapa como Map<companyId, List<Employee>>el uso de corrientes de Java, ya que tiene que ser performante.

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

Pero el problema es que no puedo llamar algo así como Empleado :: getCompany (). GetCompanyId ()

Cómo puedo hacer esto. Cualquier sugerencia es bienvenida

Eran :

Utilizar una expresión lambda en lugar de una referencia del método:

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

O simplemente:

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

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=389889&siteId=1
Recomendado
Clasificación