MWB:
私はのリスト持っていると言うPeople
の属性の名前と年齢とを。どのように私はすべてのインスタンスを取得しますPeople
ストリームを使用して、属性の年齢のための最大値を持っていますか?
現在、私は、2段階のアプローチを使用しています:
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());
何の心配もなく、この作品。しかし、年齢を計算することは、高価な関数であることを場合を考えます。あなたが一度にそれを行うことができれば、その場合には、それはそれではないだろう、いいだろうか?
ルスラン:
またmapFactoryとしてのTreeMapでgroupingByを使用することができます。
List<Group> list = people.stream()
.collect(groupingBy(Group::getAge, TreeMap::new, toList()))
.lastEntry()
.getValue();