您可以通过以下方式实现它:
- 遍历
Round
的list
- 从
Round
对象更改为List<Hit> hits
, - 使用
flatMap
从去Stream<List<Hits>>
到Stream<Hits>
- 从转换
Hits
到其prizeAmount
领域 - 得到
max
如果存在 - 如果没有最大值(如列表为空或其他),则返回
-1
所以使用
Method reference
int maxPrize = arrRoundarrRound.stream()// Stream<Round> .map(Round::getHits)// Stream<List<Hits>> .flatMap(List::stream) // Stream<Hits> .mapToInt(Hit::getPrizeAmount) // IntStream .max() // OptionalInt .orElse(-1); // int
带班
lambda和
map + flatMap一个:
int maxPrize = arrRoundarrRound.stream() .flatMap(round -> round.getHits().stream()) .mapToInt(hits -> hits.getPrizeAmount()) .max() .orElse(-1);



