是否有一些单行桥接方法将给定的枚举转储到java.util.List或java.util.Set?
一些内置的东西,如Arrays.asList()或Collection.toArray()应该存在于某个地方,但我无法在我的IntelliJ调试器的评估器窗口中找到它(以及谷歌/SO结果)。
是否有一些单行桥接方法将给定的枚举转储到java.util.List或java.util.Set?
一些内置的东西,如Arrays.asList()或Collection.toArray()应该存在于某个地方,但我无法在我的IntelliJ调试器的评估器窗口中找到它(以及谷歌/SO结果)。
你可以使用Collections.list()在一行内将枚举转换为列表:
List<T> list = Collections.list(enumeration);
没有类似的方法来获取Set,但是你仍然可以在一行中完成:
Set<T> set = new HashSet<T>(Collections.list(enumeration));
我需要同样的事情和这个解决方案的工作很好,希望它能帮助别人也
Enumeration[] array = Enumeration.values();
List<Enumeration> list = Arrays.asList(array);
然后您可以获得枚举的.name()。
如果你需要Set而不是List,你可以使用EnumSet.allOf()。
Set<EnumerationClass> set = EnumSet.allOf(EnumerationClass.class);
更新:JakeRobb是对的。我的答案是java.lang.Enum而不是java.util.Enumeration。抱歉,我的回答不相关。
当使用番石榴(见文档)有Iterators.forEnumeration。给定一个枚举x,你可以做以下事情:
获取一个不可变的集合:
ImmutableSet.copyOf(Iterators.forEnumeration(x));
获取一个不可变列表:
ImmutableList.copyOf(Iterators.forEnumeration(x));
获取hashSet:
Sets.newHashSet(Iterators.forEnumeration(x));