Скажем, у меня есть список People
с атрибутами name и age.Как получить все экземпляры People
, которые имеют наибольшее значение для возраста атрибута, используя поток?
В настоящее время я использую двухэтапный подход:
1) Поискмаксимальное значение возраста
int maxAge = group
.stream()
.mapToInt(person -> person.getAge())
.max()
.orElse(-1);
2) Создание списка People
с этим возрастом
List<Group> groupWithMaxAge = group
.stream()
.filter(person -> person.getAge() == maxAge)
.collect(Collectors.toList());
Не беспокойтесь, это работает.Однако рассмотрим случай, когда вычисление возраста является дорогой функцией.В таком случае было бы неплохо, если бы вы могли сделать это за один раз, не так ли?