将枚举转换为集/列表

问题描述 投票:146回答:6

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

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

api collections conventions java
6个回答
287
投票

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

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

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

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

19
投票

怎么样:Collections.list(Enumeration e)返回ArrayList<T>


5
投票

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


3
投票

当使用番石榴(见doc)时,有Iterators.forEnumeration。鉴于Enumeration x,您可以执行以下操作:

得到一个不可变集:

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

获取不可变的列表:

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

获取hashSet:

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

2
投票

如果你需要Set而不是List,你可以使用EnumSet.allOf()

Set<EnumerationClass> set = EnumSet.allOf(EnumerationClass.class);

更新:JakeRobb是对的。我的答案是关于java.lang.Enum而不是java.util.Enumeration。抱歉无关的答案。


-2
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.