Usando JAVA 8, se desea reducir el código para la lógica del bucle for each proporcionado.
Estoy recuperando datos de una API REST con un objeto y quiero copiarlo en otro objeto de respuesta Java Response.
Actualmente lo he implementado con Java normal de la siguiente manera:
public OrganizationalUnitTeamsList getTeamsDetails() {
List<organizationalunit> organizationalUnitList = organizationalUnitConnector.getOrganizationalUnit();
OrganizationalUnitTeamsList teamsListResponse = new OrganizationalUnitTeamsList();
List<teamdetails> availableTeamList = new ArrayList<>();
for (OrganizationalUnit organizationalUnit : organizationalUnitList) {
TeamDetails teams = new TeamDetails();
teams.setHierarchyLevel(organizationalUnit.getHierarchyLevel());
teams.setLocationName(organizationalUnit.getLocationName());
teams.setName(organizationalUnit.getName());
teams.setShortName(organizationalUnit.getShortName());
availableTeamList.add(teams);
}
teamsListResponse.setTeams(availableTeamList);
return teamsListResponse;
}
Quiero que el código anterior se convierta a Java 8.
¿Alguien puede sugerirme una manera más eficiente y concisa de lograr la lógica anterior?
Gracias de antemano.
davy.ai
Una forma de lograr la lógica anterior de manera más eficiente y concisa usando características de Java 8 como flujos y expresiones lambda es la siguiente:
En este código, primero recuperamos la lista de objetos
OrganizationalUnit
de la API REST. Luego convertimos esta lista en un flujo usandostream()
, lo que nos permite realizar operaciones en cada elemento de la lista de manera concisa y eficiente.Utilizamos el método
map()
para transformar cada objetoOrganizationalUnit
en un objetoTeamDetails
con los campos requeridos establecidos. Lo hacemos utilizando una expresión lambda, que toma una entradaOrganizationalUnit
y devuelve una salidaTeamDetails
.Finalmente, utilizamos el método
collect()
para convertir el flujo nuevamente en unaList
deTeamDetails
. Pasamos esta lista al constructor de la claseOrganizationalUnitTeamsList
, que crea una nueva instancia deOrganizationalUnitTeamsList
y establece su campoteams
en la lista pasada. Luego devolvemos este nuevo objeto.