0
0

More than 3 years have passed since last update.

ストリームAPI(自分用)(工事中)

Last updated at Posted at 2019-11-22

ストリームAPIとは

データソース(コレクション、配列、I/Oリソース)をもとに、集計操作を行うAPI

★ストリームのパイプライン処理
ストリームAPIは複数の入出力を繋ぐための仕組みを提供しており、処理を行う流れは、データソースをもとに「ストリームオブジェクト」を生成し、後続する処理を連結させることでパイプライン処理を可能とする。

★パイプライン処理の分類
①操作・問い合わせ対象となるデータソース
・コレクション、配列、I/O、リソース...
②中間操作
・ストリーム・パイプラインを形成
③終端操作
・ストリーム・パイプラインを実行して結果を生成

※中間操作(filter()やmap())では、実際の処理結果を返さずに指定した中間操作を保持したストリームが返される。実際にすべての処理が実行されるのは終端操作のメソッドで成される。

1. ストリームの種類と生成

データソースとなり得るクラスにはストリーム生成用のメソッドが提供されている。

1-1. ストリーム生成用の主なメソッド

・java.util.Collection

メソッド名 説明
default Stream<E> stream() このコレクションをソースとして使用し、逐次的なStreamオブジェクトを返す new ArrayList<>().stream()

・java.util.Arrays

メソッド名 説明
static <T> Stream<T> stream(T[] array) 指定された配列ををソースとして使用し、逐次的なStreamオブジェクトを返す Arrays.stream(new Object[]{10, 20, 30})
static IntStream stream(int[] array) 指定されたint型の配列をソースとして使用し、逐次的なIntStreamオブジェクトを返す Arrays.stream(new int[]{10, 20, 30})

※IntStream...プリミティブ型用(int)ストリームオブジェクト

・java.util.stream.Steram

メソッド名 説明
static <T> Stream<T> of(T t) 指定された単一の要素をソースとして使用し、逐次的なStreamを返す Stream.stream("abc")
static <T> Stream<T> of(T... values) 指定された要素をソースとして使用し、逐次的なStreamオブジェクトを返す Stream.stream("Tokyo", "Hakone", "Okinawa")
static <T> Stream<T> empty() 空のStreamオブジェクトを返す Stream.empty()
static <T> Stream<T> generate(Supplier<T> s) 指定されたSupplier(ラムダ式)によって生成される要素に対する順序付けされていないStreamオブジェクトを返す Stream.generate(() -> 100)
static <T> Stream<T> iterate(T seed, UnaryOperator<T> f) 順序付けされた無限順次Streamを返す(第一引数seedは初期値を指定し、第二引数は無限順次させる抽象値を指定する Stream.iterate(1, n -> ++n)

・java.util.stream.DoubleStream

メソッド名 説明
static DoubleStream of(double... values) 指定された要素をソースとして使用し、逐次的なDoubleStreamオブジェクトを返す DoubleStream.of(2.5, 10.0, 6.7)

・java.util.stream.IntStream

メソッド名 説明
static IntStream range(int startInclusive, int endExclusive) startInclusive(含む)からendExclusive(含まない)の範囲の値を含む、順序付けされた順次IntStreamを返す IntStream.range(1, 11)
static Intstream rangeClosed(int startInclusive, int endInclusive) startInclusive(含む)からendInclusive(含む)の範囲の値を含む、順序付けされた順次IntStreamを返す IntStream.ranceClosed(1, 10)

1-2. ストリームの種類

インターフェース名 説明
Stream 順次及び並列の集約操作をサポートする汎用的なストリーム
IntStream 順次及び並列の集約操作をサポートするint値のストリーム。但し、intの他、short、byte、char型に使用可能
LongStream 順次及び並列の集約操作をサポートするlong値のストリーム
DoubleStream 順次及び並列の集約操作をサポートするdouble値のストリーム。但し、double値の他、float型に使用可能
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0