将枚举转换为一个Set / List

是否有一些单线桥的方法转储给定的枚举java.util.List或java.util.Set?

Arrays.asList()Collection.toArray()内置的东西应该存在的地方,但我无法在我的IntelliJdebugging器的评估窗口(和谷歌/ SO的结果也)find。

先谢了,安东

您可以使用Collections.list()Enumeration转换为List中的一行:

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

有没有类似的方法来获得一个Set ,但是你仍然可以做到一行:

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

怎么样: ArrayList Collections.list(枚举e)

将枚举转换为列表有一个简单的例子。 为此我使用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); } } 

参考: 如何将枚举转换为列表

当使用番石榴(见文档 )有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); 

更新 :JakeRobb是正确的。 我的答案是关于java.lang.Enum而不是java.util.Enumeration。 对不起,无关的答案。

我需要同样的东西,这个解决scheme工作正常,希望它也可以帮助别人

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

那么你可以得到你的枚举的.name()。