Javaのストリームでプリミティブ型(基本型)の数値を使用するサンプルです。
目次
IntStream
- 値がint型のときに使用するストリームです。
- 配列や指定した値からストリームを生成し、そのストリームに対して処理します。
- 外部のローカル変数に対してアクセスできるのはfinal変数のみです。(再代入不可の変数)
- 以下は、OracleのJava8のIntStreamインターフェースのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/stream/IntStream.html
指定した値を足し算する
IntStreamで指定した値を足し算するサンプルです。
package test1;
import java.util.stream.IntStream;
public class Test1 {
public static void main(String[] args) {
IntStream a = IntStream.of(2,1,3); //ストリームを生成
System.out.println(a.sum()); //6
long b = IntStream.of(2,1,3) //ストリームを生成
.sum();
System.out.println(b); //6
int[] c = {2,1,3};
IntStream d = IntStream.of(c); //ストリームを生成
System.out.println(d.sum()); //6
}
}
7行目のofはstaticメソッドです。指定した値でストリームを生成します。
8行目は、ストリームに対してsumメソッドで合計を出しています。
10,11行目は、ストリームを生成してsumで合計し、戻り値を変数bにセットしています。
14行目は、配列です。
15行目のofはstaticメソッドです。配列でStreamを生成します。
Arraysクラスのstreamメソッド
- Arraysクラスは、配列を操作するためのクラスです。
- 配列でStreamのインスタンスを生成するにはArraysクラスのstreamメソッドを使用します。
- 以下は、OracleのJava8のArraysクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/Arrays.html
配列の値を足し算する
Arraysクラスのstreamメソッドで指定した値を足し算するサンプルです。
package test1;
import java.util.Arrays;
import java.util.stream.IntStream;
public class Test1 {
public static void main(String[] args) {
int[] num1 = {2,1,3};
IntStream b = Arrays.stream(num1); //ストリームを生成
System.out.println(b.sum()); //6
int c = Arrays.stream(num1) //ストリームを生成
.sum();
System.out.println(c); //6
}
}
8行目は、配列です。値は数値です。
10行目は、ストリームを生成しています。
11行目は、ストリームに対してsumメソッドで合計を出しています。
13,14行目は、ストリームを生成してsumで合計し、戻り値を変数cにセットしています。
StreamからIntStreamに変換する
StreamからIntStreamに変換するサンプルです。
package test1;
import java.util.ArrayList;
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<>();
num1.add(5);
num1.add(8);
num1.add(9);
Stream<Integer> a = num1.stream();
IntStream b = a
.mapToInt(c->c);
//b.forEach(x->System.out.println(x));
b.forEach(System.out::println); //5 8 9
}
}
15行目は、Streamを生成しています。
17,18行目は、mapToIntメソッドでStreamからIntStreamに変換しています。
ラッパークラスのIntegerからプリミティブ型のintになります。
21行目のSystem.out::printlnは、メソッド参照です。20行目と同じ意味です。
IntStreamからStreamに変換する
IntStreamからStreamに変換するサンプルです。
package test1;
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();
//b.forEach(x->System.out.println(x));
b.forEach(System.out::println); //2 1 3
}
}
8行目は、IntStreamを生成しています。
10,11行目は、boxedメソッドでIntStreamからStreamに変換しています。
プリミティブ型のintからラッパークラスのIntegerになります。
14行目のSystem.out::printlnは、メソッド参照です。13行目と同じ意味です。
関連の記事
Java ラムダ式のサンプル
Java ラムダ式で関数型インターフェースを使用するサンプル
Java ストリームのサンプル(Stream)
Java 匿名クラスのサンプル