将枚举转换为一个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()。