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

一些内置的东西,如Arrays.asList()或Collection.toArray()应该存在于某个地方,但我无法在我的IntelliJ调试器的评估器窗口中找到它(以及谷歌/SO结果)。


当前回答

当使用番石榴(见文档)有Iterators.forEnumeration。给定一个枚举x,你可以做以下事情:

获取一个不可变的集合:

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

获取一个不可变列表:

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

获取hashSet:

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

其他回答

你可以使用Collections.list()在一行内将枚举转换为列表:

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

没有类似的方法来获取Set,但是你仍然可以在一行中完成:

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

这个怎么样:收集。list(Enumeration e)返回一个<T>的数组列表

我需要同样的事情和这个解决方案的工作很好,希望它能帮助别人也

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

然后您可以获得枚举的.name()。

当使用番石榴(见文档)有Iterators.forEnumeration。给定一个枚举x,你可以做以下事情:

获取一个不可变的集合:

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。抱歉,我的回答不相关。