是否有一些单行桥接方法将给定的枚举转储到java.util.List或java.util.Set?
像Arrays.asList()
或Collection.toArray()
这样的内置应该存在于某处,但我无法在IntelliJ调试器的评估窗口中找到它(以及Google / SO结果)。
答案 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);
}
}
答案 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()。