JavaでIterableをCollectionに変換する方法
まず、次のようなIterableがあるとします。
Iterable<Integer> i = Arrays.asList(50, 100, 150, 200, 250, 300, 500, 800, 1000);
次に、このIterableをCollectionに変換します。
Collection<Integer> c = convertIterable(i);
ここでは、変換処理を行うためのカスタムメソッドconvertIterable()を使用しています。メソッドの実装は以下の通りです。
public static <T> Collection<T> convertIterable(Iterable<T> iterable) {
if (iterable instanceof List) {
return (List<T>) iterable;
}
return StreamSupport.stream(iterable.spliterator(), false).collect(Collectors.toList());
}
変換の仕組み
このメソッドのポイントは次の2つです。
1. instanceofによる判定: 元のオブジェクトがすでにListである場合は、新しくコレクションを生成せず、そのままキャストして返します。ListはCollectionインターフェースを実装しているため、これが可能です。
2. ストリームAPIによる変換: List以外の場合は、iterable.spliterator()からStreamSupport.stream()を使って順次ストリーム(並列処理を示す第2引数はfalse)を生成し、collect(Collectors.toList())で新しいリストとして収集します。
サンプルプログラム
以下は、JavaでIterableをCollectionに変換する完全なプログラムです。
import java.util.*;
import java.util.stream.*;
public class Demo {
public static <T> Collection<T> convertIterable(Iterable<T> iterable) {
if (iterable instanceof List) {
return (List<T>) iterable;
}
return StreamSupport.stream(iterable.spliterator(), false).collect(Collectors.toList());
}
public static void main(String[] args) {
Iterable<Integer> i = Arrays.asList(50, 100, 150, 200, 250, 300, 500, 800, 1000);
Collection<Integer> c = convertIterable(i);
System.out.println("Collection (Iterable to Collection) = "+c);
}
}
実行結果
Collection (Iterable to Collection) = [50, 100, 150, 200, 250, 300, 500, 800, 1000]
補足:その他の変換方法
Google Guavaライブラリを使用できる環境であれば、Lists.newArrayList(iterable)やImmutableList.copyOf(iterable)といったユーティリティメソッドでも同様の変換が可能です。また、Java 8以降であれば、上記のようにストリーム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