オブジェクトのリストobjList
には、2つのフィールドage
とid
があります。 age
はlong
であり、id
はString
である。私はリストを反復して、リスト内の最小年齢を持つオブジェクトのIDを取得したい。私は、伝統的なfor
ループでそれを行うことができますが、私はobjList.stream()
を行い、その後、そのストリーム上のマップ機能を確認した場合、私はちょうどmapToInt
、mapToLong
、およびmapToDouble
を持ってJavaで8Java 8は、オブジェクトのリストから別のフィールドが最小である場合にオブジェクトのフィールドを取得します。
コンパクトなソリューションが存在することになると確信しています。これらで私は最小年齢を取得しますが、私は最小年齢のオブジェクトのIDが必要です。
リストが空ではなく、少なくとも1つのオブジェクトを持つことが保証されています。あなたの仮定が無効である、とobjList
がある場合
String id = objList.stream()
.min(Comparator.comparingLong(MyObject::getAge))
.map(MyObject::getId)
.orElseThrow(IllegalArgumentException::new);
:リスト内の要素を想定し
リストが空の場合はどうなりますか? – shmosel
私の場合、リストが空ではないことが保証されています。説明にそれを追加します。 – nishant
なぜ 'age'は' long'ですか? – shmosel