将枚举转换为集/列表

时间:2011-04-10 09:17:52

标签: api collections conventions java

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

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

7 个答案:

答案 0 :(得分:281)

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

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

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

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

答案 1 :(得分:17)

如何:Collections.list(Enumeration e)返回ArrayList<T>

答案 2 :(得分: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 :(得分:3)

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

获取不可变集:

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

获取不可变列表:

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

获取hashSet:

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

答案 4 :(得分:2)

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

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

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

答案 5 :(得分:0)

Apache commons-collections 中也有 EnumerationUtils.toList(enumeration)

答案 6 :(得分:-2)

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

<select id="select">
    <option name="iPhone"> iPhone </option>
    <option name="Android"> Android </option>
</select>

<form >
    <input name="username" id="name" />
    <input type="submit" name="submit" value="Verstuur" class="submitcancel" />
</form>

$(function() {
    $(".submitcancel").click(function () {


        var = $("#select").val();
     var name = $("#name").val();


        //if(id>0)
        var dataString = 'select=' + escape(select)+'name='+escape(name);
        $.ajax({
            type: "POST",
            url: "target.php",
            data: dataString,
            cache: false,
            cache: false,
            dataType: "json",

            success: function(html) {

            }
        });
    });

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