私はJavaストリームのreduce機能を使用しています。 次のように私のストリームデータがある次のようにreduce関数を使用して最初の要素を返します
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);
私が得る結果は
パム
しかし、私です要件は、それがまたoより大きい値を持つようにピーターを要素にすることですthers。
ピーター
私はこれをどのように達成することができますか?これを行うための代替手段はどれですか?
p2:p2ではなくp1:p2(またはviceversa)ですか? –
はい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