Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaでIterableをStreamに変換する方法

Javaでは、StreamSupport.stream()メソッドを使うことで、Iterableを簡単にStreamへ変換できます。この記事では、その具体的な手順をサンプルコードとともに解説します。

変換の基本手順

まず、変換元となるIterableを用意します。以下は文字列のリストから生成した例です。

Iterable<String> i = Arrays.asList("K", "L", "M", "N", "O", "P");

次に、独自に定義したconvertIterable()メソッドを呼び出して、Streamを作成します。

Stream<String> s = convertIterable(i);

ここで使用しているconvertIterable()メソッドの中身は以下のとおりです。Iterableからspliterator()を取得し、それをStreamSupport.stream()に渡すことで変換を実現しています。

public static <T> Stream<T> convertIterable(Iterable<T> iterable) {
   return StreamSupport.stream(iterable.spliterator(), false);
}

第2引数のfalseは、逐次(シーケンシャル)ストリームとして扱うことを意味します。並列処理を行いたい場合は、trueを指定することで並列ストリームに変更できます。

完全なサンプルプログラム

以下は、IterableStreamに変換して結果を出力する完全なプログラムです。

import java.util.*;
import java.util.stream.*;
public class Demo {
   public static <T> Stream<T> convertIterable(Iterable<T> iterable) {
      return StreamSupport.stream(iterable.spliterator(), false);
   }
   public static void main(String[] args) {
      Iterable<String> i = Arrays.asList("K", "L", "M", "N", "O", "P");
      Stream<String> s = convertIterable(i);
      System.out.println("Iterable to Stream: "+s.collect(Collectors.toList()));
   }
}

実行結果

Iterable to Stream: [K, L, M, N, O, P]

ポイントまとめ

  • StreamSupport.stream()は、Spliteratorを受け取ってストリームを生成する汎用的なメソッドです。
  • Iterableインターフェースにはspliterator()メソッドが定義されているため、どの実装クラスでもそのまま利用できます。
  • 変換後のストリームは、filter()map()などのStream APIを自由に活用できます。

この方法を使えば、レガシーなコードでIterableとして扱われているデータも、モダンなStream APIの恩恵を受けて効率的に処理できるようになります。

  1. JavaのMapをJSONに変換する3つの方法(Jackson・Gson・org.json)

    JavaのMap(マップ)をJSONに変換する方法はいくつかあります。Javaでは、配列やMapとJSONの相互変換を行う場面が非常に多く、Web APIとのデータ連携などでも欠かせない処理です。 この記事では、代表的なライブラリであるJackson、Gson、org.jsonを使用して、JavaのMapをJSONに変換する3つの具体例をサンプルコード付きで解説します。 Jacksonを使ってJavaのMapをJSONに変換する 最初の例では、Jackson Core と Jackson Databind を使ってJavaのMapをJSONに変換します。 Jacksonライブラリを使用するには

  2. JavaでList(リスト)を配列に変換する方法|toArray()とArrays.asList()の使い方

    Javaの開発において、List(リスト)と配列(Array)の相互変換は非常によく使われる基本的な操作です。 Listを配列に変換する最も簡単かつ推奨される方法は、.toArray()メソッドを使うことです。逆に、配列をListに戻したい場合は、Arrays.asList()メソッドを使用します。 以下では、文字列(String)のListや整数(Integer)のListを、それぞれ対応する配列に変換する具体例を紹介します。 String型のListを配列に変換する import java.util.ArrayList; import java.util.List; public cl