今回がProject Lambdaの最終回です。今回はストリームAPIではなく、Project Lambdaによる他のAPIの変更について紹介していきます。
Project LambdaによるAPIの変更はやはりコレクションに多くあります。ここではArraysクラス、Collectionインタフェース、Mapインタフェースの変更を紹介します。これらのインタフェースに追加されたメソッドはすべてdefault実装で実現されています。
また、Logging APIの変更についても紹介します。
Arrays
java.util.Arraysクラスは配列に関するユーティリティクラスです。配列のコピーなどさまざまな機能がそろっていますが、Java SE 8でさらに機能が加わりました。
Java SE 8で加わった機能には、メソッド名がparallelで始まるものがあります。parallelで始まるメソッドは以下の3種類です。
- parallelSort
- parallelPrefix
- parallelSetAll
parallelSortメソッドはその名の通り、sortメソッドのパラレル版です。Fork/Join Frameworkを使用して高速にソートを行います。
しかし、パラレルストリームと同様にオーバーヘッドが大きいので、要素数が大きくないと効果があがりません。
使い方は、sortメソッドとまったく同じです。
リスト1 parallelSortメソッドの使用例
int[] numbers = ...;
// 昇順
Arrays.parallelSort(numbers);
String[] words = ...;
// 自然順序の逆順
Arrays.parallelSort(words, Comparator.reverseOrder());
数値の配列は昇順のソートだけがサポートされています。オブジェクトの配列は、java.util.Comparatorインタフェースを使用することで任意の順にソート可能です。
parallelPrefixメソッドは、第2引数に指定するjava.util.function.BinaryOperatorインタフェースのラムダ式によって要素を累積していく処理を行います。