web-dev-qa-db-ja.com

列挙型をセット/リストに変換する

特定の列挙をJava.util.ListまたはJava.util.Setにダンプするためのワンライナーブリッジメソッドはありますか?

Arrays.asList()Collection.toArray()などのビルトインがどこかに存在するはずですが、IntelliJデバッガーの評価ウィンドウ(およびGoogle/SOの結果も)で見つけることができません。

150
Anton K

Collections.list() を使用して、1行でEnumerationListに変換できます。

List<T> list = Collections.list(enumeration);

Setを取得する同様の方法はありませんが、1行で実行できます。

Set<T> set = new HashSet<T>(Collections.list(enumeration));
291
WhiteFang34

これはどうですか: Collections.list(Enumeration e)ArrayList<T>を返します

19
Nate W.

列挙をリストに変換する簡単な例があります。このために、Collections.list(enum)メソッドを使用しました。

public class EnumerationToList {

    public static void main(String[] args) {
        Vector<String> vt = new Vector<String>();
        vt.add("Java");
        vt.add("php");
        vt.add("array");
        vt.add("string");
        vt.add("c");

        Enumeration<String> enm = vt.elements();
        List<String> ll = Collections.list(enm);
        System.out.println("List elements: " + ll);
    }

}

リファレンス: 列挙をリストに変換する方法

5
Anuj Dhiman

グアバを使用する場合( doc を参照)、Iterators.forEnumerationがあります。 Enumeration xを指定すると、次のことができます。

不変のSetを取得するには:

ImmutableSet.copyOf(Iterators.forEnumeration(x));

不変のリストを取得するには:

ImmutableList.copyOf(Iterators.forEnumeration(x));

hashSetを取得するには:

Sets.newHashSet(Iterators.forEnumeration(x));
3
Alex

SetではなくListが必要な場合は、 EnumSet.allOf() を使用できます。

Set<EnumerationClass> set = EnumSet.allOf(EnumerationClass.class);

Update:JakeRobbは正しい。私の答えは、Java.util.EnumerationではなくJava.lang.Enumについてです。無関係な回答で申し訳ありません。

2
Timur Levadny