カート:
レッツは、以下に記載されたデータ構造を、持っています。
Class LandResearch {
Research research;
}
Class Research {
List<Bonus> bonuses;
}
Class Bonus {
BonusType bonusType;
double bonusValue;
}
私が持っている状況でI'am、List<LandResearch>
と私は特定のを持っていますBonusType
。私は、与えられたすべてのボーナスを収集しますBonusType
。
これは、サイクルの間でそれを行う問題ではありませんが、私はストリームとそれを管理したいと思います。
私は交換したい既存のソリューション、。
List<Bonus> bonuses = new ArrayList<>();
for (LandResearch landResearch: landResearches) {
for (Bonus bonus: landResearch.getResearch().getBonuses()){
if (bonus.getBonusType().equals(searchedBonusType)){
bonuses.add(bonus);
}
}
}
ヘルプとヒントをいただき、ありがとうございます。
彼らは次のとおりでした:
使用flatMap
生成するためにStream
、すべてのBonus
インスタンスが、その後、フィルタおよび収集するために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>