假设我有一个 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/