gpt4 book ai didi

java - 如何使用流编译具有给定属性最大值的所有对象的列表?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:19:41 26 4
gpt4 key购买 nike

假设我有一个 People 列表,其中包含属性名称和年龄。如何使用流获取具有最大属性 age 值的 People 的所有实例?

目前,我使用的是两步法:

1)寻找年龄的最大值

int maxAge = group
.stream()
.mapToInt(person -> person.getAge())
.max()
.orElse(-1);

2) 创建一个包含该年龄段的的列表

List<Group> groupWithMaxAge = group
.stream()
.filter(person -> person.getAge() == maxAge)
.collect(Collectors.toList());

别担心,这行得通。但是,请考虑计算年龄是一个开销很大的函数的情况。那样的话,能一次性搞定就好了不是吗?

最佳答案

您还可以将 groupingBy 与 TreeMap 一起用作 mapFactory:

List<Group> list = people.stream()
.collect(groupingBy(Group::getAge, TreeMap::new, toList()))
.lastEntry()
.getValue();

关于java - 如何使用流编译具有给定属性最大值的所有对象的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54592343/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com