読者です 読者をやめる 読者になる 読者になる

ITお絵かき修行

3歩歩いても忘れないために

StreamAPIのおさらい - java.util.stream.Stream

JavaSE8で導入されたStreamAPIを使用してできる処理のうち、java.util.stream.Streamクラスの機能を利用してできる処理を書いてみた。

【やること】
java.util.stream.Stream系クラスのメソッドを使ってできる処理をさらう。
Java Streamメモ(Hishidama's Java8 Stream Memo) で紹介されているメソッド+αを書いてみる。


【環境】
Java
・jdk1.8.0_25
IDE
Eclipse Luna SR1 (4.4.1)


【資産】
具体的な使い方はソースを参照。

1.Stream内の単一の値に対する順次処理

(1)Stream#map・・・Streamの要素を取り出して変換を行う
(2)Stream#mapToDouble・・・Streamの要素を取り出してdoubleへの変換を行う
(3)Stream#mapToInt・・・Streamの要素を取り出してintへの変換を行う
(4)Stream#mapToLong・・・Streamの要素を取り出してlongへの変換を行う
(5)Stream#floatMap・・・Streamの要素を取り出してStreamへの変換を行う
(6)Stream#flatMapToDouble・・・Streamの要素を取り出してDoubleStreamへの変換を行う
(7)Stream#flatMapToInt・・・Streamの要素を取り出してIntStreamへの変換を行う
(8)Stream#flatMapToLong・・・Streamの要素を取り出してLongStreamへの変換を行う
(9)Stream#forEach・・・Stream内各要素に対して処理を適用する(※処理順の指定なし)
(10)Stream#forEachOrdered・・・Stream内各要素に対して処理を適用する(※処理順の指定あり)
StreamSample/OperateSingleElementStreams.java at master · hhhhhskw/StreamSample · GitHub

2.Streamの内の複数の値に対する順次処理

(1)Stream#reduce・・・Stream内の複数の要素を取り出して処理を行い、単一の結果(戻り値は入力値による)として出力する
(2)Stream#collect・・・Stream内の複数の要素を取り出して処理を行い、コレクション(CollectionやStringBuilderなど)として出力する
(3)Stream#concat・・・Stream同士の連結を行う
StreamSample/OpetrateMultiElementStreams.java at master · hhhhhskw/StreamSample · GitHub

3.Stream内の値に対するソート処理

(1)Stream#sort・・・Streamに含まれる値をソートする
StreamSample/SortStreams.java at master · hhhhhskw/StreamSample · GitHub

4.Stream内の値に対するフィルタリング処理

(1)Stream#filter・・・Streamに含まれる値のフィルタリング
(2)Stream#min・・・Streamに含まれる値のうち、最小値を返却する
(3)Stream#max・・・Streamに含まれる値のうち、最大値を返却する
(4)Stream#count・・・Streamに含まれる要素の数を返却する
(5)Stream#anyMatch・・・Streamに含まれる要素に対して、条件検索(条件に1要素でも合致すればtrue)を行う
(6)Stream#allMatch・・・Streamに含まれる要素に対して、条件検索(条件に完全に一致する場合はtrue)を行う
(7)Stream#noneMatch・・・Streamに含まれる要素に対して、条件検索(条件一致する値がなけれはtrue)を行う
(8)Stream#findFirst・・・Streamに含まれる要素の先頭の値を返却する
(9)Stream#findAny・・・Streamに含まれる要素のいずれかの値を返却する(※並列処理用)
(10)Stream#distinct・・・Streamに含まれる値の重複を排除する
StreamSample/FilteringStreams.java at master · hhhhhskw/StreamSample · GitHub

5.Streamに対する各種操作

(1)Stream#limit・・・Streamに含まれる値の個数を制限(limit)し、Streamを返却する
(2)Stream#skip・・・Streamに含まれる値の開始位置を変更(skip)し、Streamを返却する
StreamSample/OperateStreams.java at master · hhhhhskw/StreamSample · GitHub

6.Streamを生成する

(1)Stream#of・・・指定された値を含むStreamを返却する。
(2)Stream#empty・・・空のStreamを返却する
(3)Stream#generate・・・第一引数で渡された要素を含むStreamを返却する
(4)Stream#iterate・・・第一引数で渡された初期要素に対し、第二引数で指定されたを関数を適用した要素の集合を含むStreamを返却する
StreamSample/CreateStreams.java at master · hhhhhskw/StreamSample · GitHub

7.Streamの形式変更操作

(1)Stream#toArray・・・Straemを配列に変換する ※終端操作
(2)Stream#builder・・・Streamのbuilderを取得する
StreamSample/ChangeTypeStream.java at master · hhhhhskw/StreamSample · GitHub