Javaストリーム:groupingByを交換し、toMapによって削減

泡:

私は、いくつかのコードを高めることについて前に質問をしてきましたここに@Holgerは私の右の応答を与え、彼はそれを言いました:

あなた自身がgroupingByと縮小コレクタを使用して見つけるたびに、あなたはtoMapがより適切でないかどうかを確認する必要があります

これは、パターンのように思えます!そして何彼は私が何を示唆することは完璧でした。

これはよく知られている模様ですか?なぜtoMap組み合わせ(場合によっては)よりも優れているgroupingByreducing

ホルガー:

このパターンは、両方のコレクターを使用しての経験によって明らかになりました。あなたは問題がいずれかのコレクタで解決することができますが、そのうちの一つは、特定のタスクのためのより良いフィット思わStackOverflowの上でいくつかのQ&Asを見つけることができます。

これは間の差の変化で減少し、変更可能な削減最初のケースでは、我々は、使用してreduce第二我々の使用中に、ストリームでcollectそれはことを、自然に来るgroupingBy秒かかりコレクター、Collector引数としては、私たちはグループに変更可能な削減を適用する最適なツールです。

明らかに、ではないことをtoMap服用コレクタマージ我々は、古典的な削減を実行するときにマージ機能が削減機能と同じ形状と目的を持っているとしての機能は、それがなどと呼ばれていない場合でも、適切なツールです。

実際には、我々は、削減を実行するコレクターが、返すことに注意Optionalして使用しているとき、通常、所望されていない、groupingBy理由である、toMapこれらのケースでは、よりスムーズに動作します。

そここれらのAPIを使用している間明らかになる確かに複数のパターンがありますが、答えは一つでそれらを収集することはStackOverflowのの範囲ではありません。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=229477&siteId=1