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

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


まず、次のようなIterableがあるとします。

Iterable<Integer> i = Arrays.asList(50, 100, 150, 200, 250, 300, 500, 800, 1000);

次に、このIterableCollectionに変換します。

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である場合は、新しくコレクションを生成せず、そのままキャストして返します。ListCollectionインターフェースを実装しているため、これが可能です。

2. ストリームAPIによる変換: List以外の場合は、iterable.spliterator()からStreamSupport.stream()を使って順次ストリーム(並列処理を示す第2引数はfalse)を生成し、collect(Collectors.toList())で新しいリストとして収集します。

サンプルプログラム

以下は、JavaでIterableCollectionに変換する完全なプログラムです。

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を活用するのが最も標準的で簡潔なアプローチです。

  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