Como lista de objetos filterred de subcolecciones recopilar

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 flatMappara producir una Streamde todos los Bonuscasos, 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>

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=184592&siteId=1
Recomendado
Clasificación