「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