carrito:
Vamos a tener estructura de datos, que se describe a continuación.
Class LandResearch {
Research research;
}
Class Research {
List<Bonus> bonuses;
}
Class Bonus {
BonusType bonusType;
double bonusValue;
}
I'am en situación, cuando tengo una List<LandResearch>
y no tengo específica BonusType
. Quiero recoger todas las bonificaciones, lo que ha dado BonusType
.
No es un problema para hacerlo con los ciclos, pero me gustaría manejarlo con las corrientes.
solución, que me gustaría sustituir existente.
List<Bonus> bonuses = new ArrayList<>();
for (LandResearch landResearch: landResearches) {
for (Bonus bonus: landResearch.getResearch().getBonuses()){
if (bonus.getBonusType().equals(searchedBonusType)){
bonuses.add(bonus);
}
}
}
Gracias por ayuda y consejos ti.
Eran :
Utilice flatMap
para producir una Stream
de todos los Bonus
casos, después del filtro y a cobro revertido a un List
:
List<Bonus> bonuses =
landResearches.stream() // Stream<LandResearch>
.flatMap(l->l.getResearch().getBonuses().stream()) // Stream<Bonus>
.filter(b->b.getBonusType().equals(searchedBonusType)) // Stream<Bonus>
.collect(Collectors.toList()); // List<Bonus>