特定の列挙をJava.util.ListまたはJava.util.Setにダンプするためのワンライナーブリッジメソッドはありますか?
Arrays.asList()
やCollection.toArray()
などのビルトインがどこかに存在するはずですが、IntelliJデバッガーの評価ウィンドウ(およびGoogle/SOの結果も)で見つけることができません。
Collections.list()
を使用して、1行でEnumeration
をList
に変換できます。
List<T> list = Collections.list(enumeration);
Set
を取得する同様の方法はありませんが、1行で実行できます。
Set<T> set = new HashSet<T>(Collections.list(enumeration));
これはどうですか: Collections.list(Enumeration e) はArrayList<T>
を返します
列挙をリストに変換する簡単な例があります。このために、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);
}
}
リファレンス: 列挙をリストに変換する方法
グアバを使用する場合( doc を参照)、Iterators.forEnumeration
があります。 Enumeration x
を指定すると、次のことができます。
不変のSetを取得するには:
ImmutableSet.copyOf(Iterators.forEnumeration(x));
不変のリストを取得するには:
ImmutableList.copyOf(Iterators.forEnumeration(x));
hashSetを取得するには:
Sets.newHashSet(Iterators.forEnumeration(x));
Set
ではなくList
が必要な場合は、 EnumSet.allOf() を使用できます。
Set<EnumerationClass> set = EnumSet.allOf(EnumerationClass.class);
Update:JakeRobbは正しい。私の答えは、Java.util.EnumerationではなくJava.lang.Enumについてです。無関係な回答で申し訳ありません。