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


171

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

何かがのようなビルトインArrays.asList()またはCollection.toArray()どこかに存在している必要がありますが、私は(あまりにも、とGoogle / SO結果を)私IntelliJのデバッガの評価ウィンドウでそれを見つけることができませんよ。

回答:


320

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

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

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

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

どういうわけか、オートコンプリートドロップダウンに潜んでいるときにこのメソッドを逃しました。ありがとう!
アントンK


5

(参照グアバを使用する場合はドキュメントを)がありますIterators.forEnumeration。与えられたEnumeration xあなたは、次の操作を行うことができます。

不変セットを取得するには:

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

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

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

hashSetを取得するには:

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

5

列挙をリストに変換する簡単な例があります。このために私は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);
    }

}

参考:列挙をリストに変換する方法


3

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

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

更新:JakeRobbは正しいです。私の答えは、java.util.Enumerationではなくjava.lang.Enumについてです。無関係な答えでごめんなさい。


2
質問者がjava.lang.Enumではなく、イテレータのレガシー従兄弟であるjava.util.Enumerationについて質問していたと確信しています。
JakeRobb 2017

「java Convert enum to a set」でグーグル検索をしたところ、このスレッドが最初の応答として戻ってきました。@Timurは私の賛成票を取得します。
ShellDude

-2

私は同じことが必要で、この解決策はうまくいきました、それが誰かにも役立つことを願っています

Enumeration[] array = Enumeration.values();
List<Enumeration> list = Arrays.asList(array);

次に、列挙の.name()を取得できます。


5
あなたの答えは、配列をリストに変換する方法を示しており、列挙型の配列がある場合にのみ発生します。問題は、列挙->リスト変換についてでした。
クリガー2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.