任何人都可以确认Enumeration
仅适用于旧版集合框架类吗?
我尝试使用Vector
检索Stack
和Enumeration
的元素,但它可以正常工作。
Stack<Integer> stack=new Stack<Integer>();
stack.add(5);
stack.add(9);
System.out.println(stack);
Enumeration<Integer> enumeration=stack.elements();
while (enumeration.hasMoreElements()) {
Integer integer = (Integer) enumeration.nextElement();
System.out.println(integer);
}
但是当我在Set
上尝试时,它不起作用。所以我对Enumeration
仅适用于遗留集合框架类或Enumeration
是否适用于任何类而感到困惑。
答案 0 :(得分:2)
更新的Java集合有自己的迭代器,可以完成类似的工作。你也有像foreach循环这样的东西,以使事情变得更容易。
答案 1 :(得分:1)
当我在集合中尝试此操作时,它无法正常工作
假设您的意思是java.util.Set
,该接口没有返回Enumeration
对象的方法,因此毫无疑问它不起作用。
我也会假设,因为您正在谈论遗留软件,所以 了解Iterator
和Iterable
。
在这里做了很多假设。
答案 2 :(得分:1)
Enumeartion不仅可以处理遗留集合框架类,还可以处理其他集合框架类。 使用Stack或Vector时,我们可以像这样直接枚举
Stack<Integer> stack=new Stack<Integer>();
stack.add(5);
stack.add(9);
System.out.println(stack);
Enumeration<Integer> enumeration=stack.elements();
while (enumeration.hasMoreElements()) {
Integer integer = (Integer) enumeration.nextElement();
System.out.println(integer);
}
Vector<Integer> vector=new Vector<Integer>();
vector.add(5);
vector.add(9);
System.out.println(vector);
Enumeration<Integer> enumeration2=vector.elements();
while (enumeration2.hasMoreElements()) {
Integer integer = (Integer) enumeration2.nextElement();
System.out.println(integer);
}
但是当我们使用像HashSet,ArrayList等集合框架类时,我们可以通过将集合的对象作为参数传递给Vector或Stack构造函数来枚举。请参阅下面的代码
Set<Integer> set=new HashSet<Integer>();
set.add(6);
set.add(7);
System.out.println(set);
Enumeration<Integer> enumeration3=new Vector(set).elements();
while (enumeration3.hasMoreElements()) {
Integer integer = (Integer) enumeration3.nextElement();
System.out.println(integer);
}
List<Integer> list=new ArrayList<Integer>();
list.add(12);
list.add(23);
System.out.println(list);
Enumeration<Integer> enumeration4=new Vector(list).elements();
while (enumeration4.hasMoreElements()) {
Integer integer = (Integer) enumeration4.nextElement();
System.out.println(integer);
}