Stream APIの基本
Stream APIによる処理は、大雑把に以下のように分類できます。
・データソースからStreamを生成
・加工/フィルターなどの中間処理
・最終的な集計/出力などの終端処理
たとえば以下は、リストから5文字以上の文字列だけを抽出し、その頭文字だけを順に出力する例です。
StreamBasic.java
\package com.example.mynavi.streamapi; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class StreamBasic { public static void main(String[] args) { List<String> data = new ArrayList<>( Arrays.asList("あいう", "かきくけこ", "さしすせそ")); data // ①Streamを生成 .stream() // ②中間処理(加工) .filter(s -> s.length() >= 5) .map(s -> s.substring(0)) // ③終端処理 .forEach(System.out::println); } }
▼
かきくけこ さしすせそ
リスト(ArrayList)からStreamを生成するにはstreamメソッドを呼び出すだけです。この例であればString型のリストなので、生成されるのもStream<String>です。
Streamを生成できたら、これを流れる値を処理(加工)するのが中間処理です(②)。ここではfilterメソッドで文字数が5以上である文字列だけを残し、残った文字列からsubstringメソッドで頭文字だけ取り出します。このように中間処理は必要に応じて複数あっても構いませんし、不要であれば省略しても構いません。
最終的な処理結果を出力するのが最終処理です。この例であれば、forEachメソッドを使って、得られた結果を順に出力しています。