Java 如何从子集合中收集筛选对象列表
让我们来看看下面描述的数据结构Java 如何从子集合中收集筛选对象列表,java,java-8,java-stream,Java,Java 8,Java Stream,让我们来看看下面描述的数据结构 Class LandResearch { Research research; } Class Research { List<Bonus> bonuses; } Class Bonus { BonusType bonusType; double bonusValue; } 感谢您的帮助和提示。使用flatMap生成所有奖金实例的流,然后过滤并收集到列表: List<Bonus> bonuses =
Class LandResearch {
Research research;
}
Class Research {
List<Bonus> bonuses;
}
Class Bonus {
BonusType bonusType;
double bonusValue;
}
感谢您的帮助和提示。使用
flatMap
生成所有奖金
实例的流
,然后过滤并收集到列表
:
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>
列出奖金=
landResearches.stream()//stream
.flatMap(l->l.getResearch().GetBonus().stream())//流
.filter(b->b.GetBonuType().equals(SearchedBonuType))//流
.collect(Collectors.toList());//列表
如果您可以选择
private fun Collection<LandResearch>.bonuses(wanted: BonusType): List<Bonus> =
flatMap { it.research.bonuses }.filter { it.bonusType == wanted }
private fun Collection<LandResearch>.bonuses(wanted: BonusType): List<Bonus> =
flatMap { it.research.bonuses }.filter { it.bonusType == wanted }
val bonusesOfWantedType = listOfLandSearches.bonuses(wantedBonusType)