java.util.stream.Collectorsのstaticメソッドとして定義されている。groupingByメソッドの引数に指定したラムダ式の戻り値の型と一致するっぽい。importしてればクラス名の指定はいらないはず。ちなみに、クラス名がsで終わってるクラスは、utilityクラスなことが多い。引数にcounting()の指定が無ければ、戻り値はAlbumのListを返す。引数にcounting()の指定が有れば、そのListの件数を返す。byしてcount(*)するイメージに近いのでは。build-inではなく、built-inの間違い。「組み込まれた」という意味である。カスタムクラスっぽい。著者のGitHub参照。StringCombiner::addは引数を2つ受け取るはず。reduceメソッドは引数を3つ取っている。氏によると、3引数のreduceメソッドはパラレル用らしい。etc)を宿題とする。GitHubでソース見てデバッガで追いましょう。この例は、アンチパターンとして紹介されている。上記の使い分けで訳す。モンテカルロ法はseedが重要なので、訳は「乱数」じゃなくて「乱数シード」の方が良い。一般に、乱数シードには「時間」を採用することが多い。シードの周期が十分に長くないと、パターンが絞れてしまう。java.util.Randomが生成する乱数は偏りがある。java.security.SecureRandomを使った方が良い、という話が以前あった。*「Java言語で学ぶデザインパターン入門」読書会の第3回でも乱数が話題だった。Java仮想マシンが使用できるプロセッサの数を返す。スレッド数」としている。ここでは「単位源」と訳した。並列演算しても初期値が重複して計算されないという意味。「単位源」という用語はStream#reduce()のJavadocの説明文から取ってきた。結合則は、浮動小数点だと演算順序によっては誤差が発生して成り立たないことがあるかもしれない。statlessとはちょっと違うイメージで使われている。データ全体が見えてないと処理できないものはstatefullと表現する。limitは、全体がわからないと処理できない。Java8でこれらのメソッドがどうパラレル処理するのかを確認しましょう。巨大なデータを渡して、CPUが並列で使われているかを調査する。parallelPrefixとparallelSetAllに4GBくらいのデータ渡して検証してみましょう。packedの訳は、「値が纏まっているか」としたが、要するに「ボクシングしているかしてないか」。」の訳がよくわからない。