Я использую функцию сокращения java-потока. Мои данные поток выглядит следующим образом:Возврат первого элемента при использовании функции уменьшения
List<Person> persons =
Arrays.asList(
new Person("Max", 18),
new Person("Peter", 23),
new Person("Pamela", 23),
new Person("David", 12),
new Person("Pam", 23));
Моя Снижение функции выглядит следующим образом:
persons.stream()
.reduce((p1, p2) -> p1.age > p2.age ? p1 : p2)
.ifPresent(System.out::println);
результат, который я получаю
Pam
Но мой требование принадлежит элементу Петра, так как оно также имеет значение больше, чем о . Про ч ее
Питер
Как я этого добиться? Кто-нибудь другой может это сделать?
Разве это не p1: p2 (или наоборот) вместо p2: p2? –
Да его p1: p2. Отредактировал вопрос. – KayV
'.reduce ((p1, p2) -> p1.age> = p2.age? P1: p2)'. Это, кстати, так же, как '.max (Comparator.comparing (p-> p.age))' или, если вам нужна производительность, '.max (Comparator.comparingInt (p-> p.age)) '. – Holger