Cómo convertir un valor de mapa utilizando stream
Tengo una tarea:
Devolver un mapa de empresas, donde la clave es su nombre y el valor es una lista de empleados almacenados como una cadena de texto que consiste en nombre
y apellido
separados por un espacio.
Aquí está mi solución y funciona bien:
Map<string,></string,><string>> getUserPerCompanyAsString() {
return getCompanyStream()
.collect(Collectors.toMap(Company::getName, company -> getUserNames(company.getUsers())));
}
private List<string> getUserNames(List<user> users) {
return users.stream()
.map(user -> user.getFirstName() + " " + user.getLastName())
.collect(Collectors.toList());
}
public class Company {
private final String name;
private final List<user> users;
}
public class User {
private final String firstName;
private final String lastName;
private final Sex sex;
private final int age;
private final List<account> accounts;
private final List<permit> permits;
}
Entonces, mi pregunta es: ¿Cómo convertir List
como un valor de mapa a List
con nombre
y apellido
separados por un espacio en una única cadena de procesamiento sin un método auxiliar?
davy.ai
Una forma de lograr esto es utilizando
flatMap
después de la operaciónmap
en la cadena de flujo. Aquí tienes el código modificado:En este código, después de mapear cada objeto
User
a una cadena con el nombre y apellido concatenados, utilizamosflatMap
para combinar todos esos flujos individuales de cadenas en un solo flujo de cadenas. Ese flujo luego se recopila como una lista y se utiliza como el valor en el mapa. De esta manera, podemos lograr la salida deseada en una sola cadena de flujo sin métodos auxiliares.