枚举是否仅适用于旧版集合框架类?

时间:2014-02-20 00:13:39

标签: java collections stack enumeration

任何人都可以确认Enumeration仅适用于旧版集合框架类吗?

我尝试使用Vector检索StackEnumeration的元素,但它可以正常工作。

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是否适用于任何类而感到困惑。

3 个答案:

答案 0 :(得分:2)

更新的Java集合有自己的迭代器,可以完成类似的工作。你也有像foreach循环这样的东西,以使事情变得更容易。

答案 1 :(得分:1)

  

当我在集合中尝试此操作时,它无法正常工作

假设您的意思是java.util.Set,该接口没有返回Enumeration对象的方法,因此毫无疑问它不起作用。

我也会假设,因为您正在谈论遗留软件,所以 了解IteratorIterable


在这里做了很多假设。

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