特定の決定に基づいて鉱山のリストを分割したいと思います。私はまた、これらの決定を保存する地図を持っています。 現在、ストリーム自体の決定を更新しています。グループ化の基準を把握する以外に、私が収集して の操作を行うのは、これが良い習慣ではないと感じます。私が持っているもう1つの方法は、ストリームをもう一度流れて し、forEachを使って地図を更新することですが、それはgetFinalDecisionを2回使用していることを意味します。より良いアプローチがありますか?方法はありますか? forEachでgetFinalDecisionを実行し、それをgroupingByに渡すことはできますか?あなたはあなたのコードを簡素化するためにMap#computeを使用することができますforEachで操作を実行し、JavaストリームでgroupingByに渡す方法
val test = myList.stream().collect(groupingBy(t -> {
A a = my_map.get(t.getSomething());
A finalDecision = getFinalDecision(t.getSomeOtherThing(), a);
my_map.put(t.getSomething(), finalDecision);
return finalDecision;
}));
あなたは実際の目標を具体化できますか? 'getFinalDecision'は' getSomething() 'によって返された実際の値を見ず、' getSomeOtherThing() 'とそれ以前の評価の結果だけを見ることはできません。そして、あなたの 'groupingBy'が' getFinalDecision'の結果を使用するときに、あなたはそれを2つの異なる操作にどのように分割したいですか? – Holger