Java ストリームで数値を合計する(IntStream)

Javaのストリーム(IntStream)で数値を合計するサンプルです。

目次

サンプル IntStream
  StreamからIntStreamに変換する
  IntStreamからStreamに変換する

IntStream

public interface IntStream extends BaseStream<Integer,IntStream>
  • 値がint型のときに使用するストリームです。
  • 配列や指定した値からストリームを生成し、そのストリームに対して処理します。
  • 外部のローカル変数に対してアクセスできるのはfinal変数のみです。(再代入不可の変数)
  • 以下は、OracleのJava8のIntStreamインターフェースのリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/util/stream/IntStream.html

指定した値を足し算するサンプルです。

package test1;
import java.util.Arrays;
import java.util.stream.IntStream;

public class Test1 {
    public static void main(String[] args) {

        System.out.println(IntStream.of(2,1,3).sum()); //6

        int[] a = {2,1,3};
        System.out.println(IntStream.of(a).sum()); //6
        
        System.out.println(Arrays.stream(a).sum()); //6
    }
 }

8行目は、3つの値の合計を出力します。
10行目は、配列です。
11行目は、IntStreamとofとsumを使用しています。
配列は13行目のようにArrays.streamでも可能です。

 

StreamからIntStreamに変換する

IntStream mapToInt(ToIntFunction<? super T> mapper)

mapToIntメソッドは、IntStream型で返します。

package test1;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.IntStream;
import java.util.stream.Stream;

public class Test1 {
	public static void main(String[] args) {

		List<Integer> num1 = new ArrayList<>(Arrays.asList(1, 2, 3));
		Stream<Integer> a = num1.stream();
		
		IntStream c = a.mapToInt(b -> b);
		
		System.out.println(c.sum()); //6
	}
}

12行目は、Streamを生成しています。
14行目は、mapToIntメソッドでStreamからIntStreamに変換しています。
16行目のsumで合計を出しています。

 

IntStreamからStreamに変換する

Stream<Integer> boxed()

boxedメソッドは、Stream型で返します。

package test1;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;

public class Test1 {
    public static void main(String[] args) {
    	    	
        IntStream a = IntStream.of(2,1,3); //ストリームを生成

        Stream<Integer> b = a.boxed();

        System.out.println(
        		b.map(c -> c + "です").collect(Collectors.toList()));
        		//[2です, 1です, 3です]
    }
 }

8行目は、IntStreamを生成しています。
11行目は、boxedメソッドでIntStreamからStreamに変換しています。
14行目は、値を加工してリストを出力しています。

関連の記事

Java ラムダ式のサンプル
Java ラムダ式で関数型インターフェースを使用
Java ストリームでリストを操作する(Stream)
Java 匿名クラスのサンプル

△上に戻る