注目記事

【Javaコード入門】Stream API_①Stream APIの基本

Stream APIによる処理は、大雑把に以下のように分類できます。

  • データソースからStreamを生成
  • 加工/フィルターなどの中間処理
  • 最終的な集計/出力などの終端処理

たとえば以下は、リストから5文字以上の文字列だけを抽出し、その頭文字だけを順に出力する例です。

StreamBasic.java
  1. package com.example.mynavi.streamapi;
  2.  
  3. import java.util.List;
  4.  
  5. public class StreamBasic {
  6.   public static void main(String[] args) {
  7.     var data = List.of("あいう", "かきくけこ", "さしすせそ");
  8.     data
  9.       // ①Streamを生成
  10.       .stream()
  11.       // ②中間処理(加工)
  12.       .filter(s -> s.length() >= 5)
  13.       .map(s -> s.substring(0))
  14.        // ③終端処理
  15.       .forEach(System.out::println);
  16.   }
  17. }

  1. かきくけこ
  2. さしすせそ

リスト(ArrayList)からStreamを生成するにはstreamメソッドを呼び出すだけです。この例であればString型のリストなので、生成されるのもStream<String>です。

Streamを生成できたら、これを流れる値を処理(加工)するのが中間処理です(②)。ここではfilterメソッドで文字数が5以上である文字列だけを残し、残った文字列からsubstringメソッドで頭文字だけ取り出します。このように中間処理は必要に応じて複数あっても構いませんし、不要であれば省略しても構いません。

最終的な処理結果を出力するのが最終処理です。この例であれば、forEachメソッドを使って、得られた結果を順に出力しています。

Stream API_目次
Stream APIの基本
Streamの生成
Streamによる中間処理
Streamの終端処理

監修

山田祥寛(有限会社 WINGSプロジェクト)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NEC にてシステム企画業務に携わるが、2003年 4 月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト(https://wings.msn.to/)」の代表でもある。主な著書に『改訂 3 版JavaScript 本格入門』(技術評論社)、「独習シリーズ(C#・Python・PHP・Ruby・JSP&サーブレットなど)」(翔泳社)、「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravel など)」(Amazon Kindle)など。売り上げの累計は100万部を超える。