「Java8」ストリーム APIを使ってArray配列の集計を計算するサンプル

環境
JavaSE 1.8
Eclipse IDE 2019-12

書式

1.IntStream mapToInt(ToIntFunction<? super T> mapper)
このストリームの要素に指定された関数を適用した結果から構成されるIntStreamを返します。

2.DoubleStream mapToDouble(ToDoubleFunction<? super T> mapper)
このストリームの要素に指定された関数を適用した結果から構成されるDoubleStreamを返します。

3.LongStream mapToLong(ToLongFunction<? super T> mapper)
このストリームの要素に指定された関数を適用した結果から構成されるLongStreamを返します。

4.int sum() このストリーム内の要素の合計を返します。これはリダクションの特殊な場合であり、次と同等になります。
  return reduce(0, Integer::sum);

default Stream<E> stream()
このコレクションをソースとして使用して、逐次的なStreamを返します。
このメソッドは、IMMUTABLE、CONCURRENT、または遅延バインディングであるスプリッテレータをspliterator()メソッドが返せない場合にオーバーライドされるべきです。

使用例

package com.arkgame.study;

import java.util.Arrays;
import java.util.List;

public class InitDemo {
      
      // Integer型配列
      public static Integer[] intArr = { 22, 33, 44 };
      // Double型配列
      public static Double[] doubleArr = { 22.5, 33.5, 44.5 };
      // Long型配列
      public static Long[] longArr = { 22L, 33L, 44L };

      public static void main(String[] args) {

            // int型の集計
            List<Integer> intLst = Arrays.asList(intArr);
            // int型の要素の合計を返す
            int resNum = intLst.stream().mapToInt(i -> i).sum();
            System.out.println("int型の集計結果: " + resNum);

            // double型の集計
            List<Double> dbLst = Arrays.asList(doubleArr);
            // double型の要素の合計を返す
            double dbRes = dbLst.stream().mapToDouble(d -> d).sum();
            System.out.println("double型の集計結果: " + dbRes);

            // long型の集計
            List<Long> lngLst = Arrays.asList(longArr);
            // long型の要素の合計を返す
            long longRes = lngLst.stream().mapToLong(l -> l).sum();
            System.out.println("long型の集計結果:" + longRes);

      }

}

実行結果

int型の集計結果: 99
double型の集計結果: 100.5
long型の集計結果:99

 

Java

Posted by arkgame