fittaoee:
Tengo el siguiente mapa de Java, donde los valores son listas de un tipo personalizado (EmployeeInfo):
Map<String, List<EmployeeInfo>> myMap;
Mi objetivo es recuperar todos los valores como una lista única de este mapa. Hasta ahora he intentado lo siguiente, pero no lo he hecho todavía funciona:
// ERROR: The constructor ArrayList<EmployeeInfo>(Collection<List<EmployeeInfo>>) is undefined
List<EmployeeInfo> info = new ArrayList<EmployeeInfo>(myMap.values());
// ERROR: java.lang.ClassCastException: java.util.HashMap$Values cannot be cast to java.util.List
List<EmployeeInfo> info = (List)myMap.values();
¿Alguien podría proporcionar alguna ayuda? ¡Gracias por adelantado!
Sam:
Es necesario para convertir el Map<String, List<EmployeeInfo>>
o {[e1,e2], [e3,e4]}
a List<EmployeeInfo>
o [e1,e2,e3,e4]
. Usted puede hacer esto mediante cartografía plana los valores a la lista. Aquí es un método que utiliza corrientes:
List<EmployeeInfo> list = myMap.values() // gives you [[e1,e2],[e3,e4]]
.stream() // stream over them
.flatMap(List::stream) // convert to [e1,e2,e3,e4]
.collect(Collectors::toList); // collect back