Kar*_*ton 4 java java-8 java-stream
我们有数据结构,如下所述.
Class LandResearch {
Research research;
}
Class Research {
List<Bonus> bonuses;
}
Class Bonus {
BonusType bonusType;
double bonusValue;
}
Run Code Online (Sandbox Code Playgroud)
我处于这种情况,当我有一个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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助和提示.
使用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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |