今回が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インタフェースのラムダ式によって要素を累積していく処理を行います。