Java8 の Stream API は Stream#collect
メソッドを使って様々な集約を行う事ができます。
java.util.stream.Collectors
で様々な Collector が提供されていますが、Collectors.collectingAndThen
のような合成が中心で同時に二つの集約を行うといった事が簡単にできません。
そのため、ラムダ禁止について本気出して考えてみた - 9つのパターンで見るStream API の「7. streamの外に結果を残す(禁止度:A)」で書かれている様な思わず禁止したくなっちゃう様なコードを書かざるを得ません。
// 引用: ラムダ禁止について本気出して考えてみた
// 7. streamの外に結果を残す(禁止度:A)
void averageAndSum1(List list) {