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()));