将枚举转换为集/列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将枚举转换为集/列表相关的知识,希望对你有一定的参考价值。

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

Arrays.asList()Collection.toArray()这样内置的东西应该存在于某处,但我无法在IntelliJ调试器的评估窗口中找到它(以及Google / SO结果)。

答案

你可以使用Collections.list()在一行中将Enumeration转换为List

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

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

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);
    }

}

参考:How to convert enumeration to list

另一答案

当使用番石榴(见doc)时,有Iterators.forEnumeration。鉴于Enumeration 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。抱歉无关的答案。

另一答案

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

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

然后你可以得到你的枚举的.name()。

以上是关于将枚举转换为集/列表的主要内容,如果未能解决你的问题,请参考以下文章

Java将字符串转换为枚举列表[重复]

使用 feign 客户端将枚举列表转换为 Spring @RequestParam 的字符串列表

将字符串数组转换为WHERE子句中的自定义枚举类型

python 将Excel工作表转换为CSV。如果没有给出工作表名称或索引,将枚举可用工作表的列表并提示工作表麻木

如何从可枚举转换为特定模型

将哈希表转换为 OCaml 中的对列表(键、值)