Java SE 8では、ラムダ式とストリームを利用するために、新しいクラスが追加され、既存のクラスが拡張されました。これについては、Javaチュートリアルの集計操作に関するレッスンに説明されています。 これらの新しいクラスと拡張されたクラスのほとんどは、次のパッケージに入っています。
java.util: 既存のパッケージ。java.lang.invokeパッケージに加えて、Java Collections Frameworkをストリームと統合し、ストリームで使用される一般的なユーティリティ機能を提供します。java.util.function: 新しいパッケージ。ラムダ式とメソッド参照のためのターゲット型を提供する汎用の関数型インタフェースが含まれています。java.util.stream: 新しいパッケージ。ストリームと集計操作に機能を提供する大部分のインタフェースおよびクラスが含まれています。既存のクラスへの多数の追加でストリームが利用されています。 その他に、関数型インタフェースのインスタンスを受け入れるメソッドも追加されており、ラムダ式やメソッド参照を使用して呼び出すことができます。
java.util.functionjava.util.streamBoolean、Integerなどのクラスおよびその他のプリミティブ型用のオブジェクト・ラッパー・クラス(AutoboxingとUnboxingに関するトピックを参照)がここに一覧表示されています。それらのクラスが拡張されて、メソッド参照のターゲットに適したメソッドが追加されたためです。 たとえば、リストに含まれている整数を追加する次の例で示しているように、Integer.sumメソッドをメソッド参照として使用できます。
Integer[] intArray = {1, 2, 3, 4, 5, 6, 7, 8 };
List<Integer> listOfIntegers =
new ArrayList<>(Arrays.asList(intArray));
System.out.println("Sum of integers: " +
listOfIntegers
.stream()
.reduce(Integer::sum).get());
(IntStream.sumメソッドを使用してもストリームに含まれている整数を追加できることに注意してください。)