【Java開発】第28回 Stream API

Java入門講座

はじめに

皆さん。こんにちは!

DreamHanksの254cmです。

今回はStream APIについて説明していきます。

Java記事のまとめはこちらです。

前回の記事は【Java開発】第27回 Lambdaです。

 

Stream APIとは?

Stream APIはJava8から追加された機能であり、リストや配列なのに格納されている複数のデータをより簡単に操作できる技術です。

 

ストリームは配列やリストように複数のデータを格納できるオブジェクトであり、入力されたデータを操作するメソッドを持っています。

 

しかし、ストリームも複数のデータを格納することができますが、Javaはストリームを利用してデータを管理するのは推奨されていません。

 

ただ、入力されたデータに対する処理を行うべきです。

 

Streamの動作

ストリームは下記のように三つの段階で動作します。

 

1. Streamインスタンス生成

2. データを絞り込む中間作業

3. 絞り込んだデータを加工する最終演算

 

に構成されています。

Stream APIの特徴

1. 最終演算が終わったストリームは再使用できません。ストリームがデータを加工するとき、データを

一つずつ取り出して加工するので、最終演算が終わった時にはストリームにデータが入っていないの

で、再活用ができません。

 

2.ストリームの演算は「Iterator」と異なり、現本のデータに影響を与えません。

つまり、処理が行われた別途の結果物を返還します。

 

3.ストリームの処理は for, whileなので実装された処理より性能が高いです。

 

Streamの生成

サンプル1

上記のようにCollectionFrameworkのクラスはstream()メソッドを使ってストリームを生成できます。

forEachという最終演算を行ったストリームをまた再活用すると「IllegalStateException」が発生されます。

 

実行結果

 

サンプル2

配列の場合、Arraysクラスのstreamメソッドを利用してStreamを生成します。

 

上記のサンプルでストリームを利用した処理と利用していない処理を比べています。

 

ストリームを利用すると既存の処理より作成するソースコードの量を減らすことができます。

 

実行結果

 

サンプル3

 

実行結果

中間作業と最終演算

〇中間作業

 

〇終了演算

 

以外にもいろんな処理がありますが、よく使われるメソッドは以上のようになります。

 

詳しい説明はこちらのリンクを参照していただくと嬉しいです。

 

Stream API活用サンプル

サンプル1

上記のサンプルはよく使われるパータンの一つであり、streamメソッドでストリームを生成、

 

filterでデータを絞り込む、collectで結果を取得の段階で構成されています。

 

下記のようなストリームを使わずに実装したソースコードより作成する量が少ないです。

 

 

実行結果

 

サンプル2

上記のように配列の値を取り出して合計を求める処理に使われます。

 

実行結果

 

サンプル3

上記のサンプルはリストの要素に一連の処理を適用したいときに使われます。

 

実行結果

 

終わりに

今回の記事は以上になります。

次回は匿名内部クラスを学びましょう。

ご覧いただきありがとうございます。

コメント