Listインターフェースを持つ配列と考えると良い。無名クラスの生成とほぼ同等と考えればよい。実際にはJVMによりいろいろな最適化がなされる。インスタンスメソッドでもメソッド参照にすることが可能。「System.out.println」の前で改行すべき。例2-9と例2-10で出力の表現形式が微妙に異なる。例2-8にいたっては出力されていない。Javaの型のCollectionではなく、日本語のコレクション(集まり)では。原書のエラッタではCollectionではないと指摘されている。サンプルコードでは「count」になっている。以下はカギカッコでくくる必要がある。メソッド参照はいつ使うべきかを参照してください。「メソッド参照はいつ使うべきか」を参照してください。IntelliJではメソッド参照に書き換え可能な場合は指摘してくれる。String::toUpperCaseの場合は引数をレシーバにしてtoUpperCase()を呼び出すが、System.out::printlnの場合は引数として渡される。このような違いはわかりづらいのではないか。stream処理の返り値に関する表記がばらばら(コレクションだったりStreamだったりイテレータだったり)だが、中間操作の返り値は全てStream。順序付けされているStreamとされていないStreamがある。parallelStreamでは基本的に維持されない。...」の「A」は冠詞。「プリミティブ型への執着」の意味がわからない。"Steve"は単位元ではないので、この例ではかまわないが、バグの要因になるのではないか。streamの要素が空のときはOptional.empty()、1つのときはそのまま、2つ以上のときに引数のlambdaが呼ばれる。引数の型はBinaryOperator<T>なので、処理結果の型をstreamの型と異なるものにはできない。処理結果の型を異なるものにする場合は3引数のreduce()を用いる。普通はこのような書き方はしないのではないか。