People.getAge()
の昇順にソートされたリストList<People>
を考えてみましょう。 Collectors.groupingBy(People::getCity)
を使用してこのリストをグループ化すると、各グループ/都市の結果リストは年齢順に並べられますか?Java groupingByコレクタはリストの順序を保持しますか?
実際には、順序を保持しているようです。私は保証を求めています。
方法のJavadocは言う:
要素が得られたマップコレクタに現れる順序の保存が必要でない場合、groupingByConcurrent(機能)を使用すると、より良好な並列性能を提供することができる
これは、リスト上のアイテムの順序を参照するかわかりません。
あなたのJavadocの見積もりには、明らかに明記されています。なぜあなたは疑問を持っていますか? –
@FrankPuffer:Map Collectorでは、Map要素を構築するために使用されたtoListコレクタを参照していますか? – Prateek
@FrankPuffer:「groupingBy」は順序を保持していますが、残念ながら[Collectors.groupingBy'のJavaDoc](http://docs.oracle.com/javase/8/docs/api /java/util/stream/Collectors.html#groupingBy-java.util.function.Function-)はそれについて何も言わない。 OpenJDKの実装を見たり、経験的なテストをすることができますが、私たちに言うことは、実装が現在行っていることであり、契約とは異なります。だからうまくいけば、JDK APIドキュメントの*どこかに明確になっているはずです。 –