Supplied引数を持つCollectors.toMapメソッドを理解することはできません。 this one。Collectors.toMapサプライヤ引数付き
私はキー、値、重複を扱うバイナリを作成する関数を使って、他のものを完全に理解しています。私は余分なサプライヤ引数を持つ最後のメソッドを理解していません。ここ
Supplied引数を持つCollectors.toMapメソッドを理解することはできません。 this one。Collectors.toMapサプライヤ引数付き
私はキー、値、重複を扱うバイナリを作成する関数を使って、他のものを完全に理解しています。私は余分なサプライヤ引数を持つ最後のメソッドを理解していません。ここ
あなたが言及した方法は、あなたが両方を決定することができます:
これとは対照的に、他の2つのオーバーロードされたバージョンでは、マップの実装はライブラリによって選択され、新しいインスタンスが作成されます。
意味があります。ありがとうございました。 1つの最後のこと。サプライヤの議論がなければ、実装は「ライブラリ」によって選択されるということは、どういう意味ですか? – tisek
は一例であり:
Arrays.asList(1, 2, 3).stream()
.collect(Collectors.toMap(i -> i, i -> i, (i, j) -> i, HashMap::new));
この例でSupplier<M> mapSupplier
が空Map
を作成することができる工場HashMap::new
あります。
余分なサプライヤは、返されるMapの実装を決定できます(たとえば、HashMap :: newまたはLinkedHashMap :: newを渡すことができます)。 – Eran
docは 'Collectors.toCollection(TreeSet :: new)'を持つ 'Collection'のためにそれを示しています – AxelH
[この質問への2番目の答え(http://stackoverflow.com/questions/33724733/confused-by-java8-コレクタ - トマップ)はよく説明されている例を持っています –