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を指定することで並列ストリームに変更できます。
完全なサンプルプログラム
以下は、IterableをStreamに変換して結果を出力する完全なプログラムです。
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の恩恵を受けて効率的に処理できるようになります。
-
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ライブラリを使用するには
-
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