【问题标题】:Does Enumeration only work in legacy collection framework classes? [closed]Enumeration 是否仅适用于遗留集合框架类? [关闭]
【发布时间】:2014-02-20 00:13:39
【问题描述】:

谁能确认Enumeration 仅适用于旧的集合框架类?

我尝试使用Enumeration 检索VectorStack 的元素,它有效。

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 是否适用于任何类。

【问题讨论】:

  • 向我们展示失败的代码。
  • It is not working是什么意思
  • "注意:该接口的功能与 Iterator 接口相同。此外,Iterator 添加了一个可选的删除操作,并且具有更短的方法名称。新的实现应考虑使用 Iterator 而不是 Enumeration。 " ...阅读文档是基础。

标签: java collections stack enumeration


【解决方案1】:

最近的 Java 集合有自己的迭代器来完成类似的工作。您还可以使用诸如 foreach 循环之类的东西来使事情变得更容易。

【讨论】:

  • @rajeev 然后问一个更清楚的问题......
【解决方案2】:

当我在 set 中尝试这个时它不起作用

假设您的意思是java.util.Set,则该接口没有返回Enumeration 对象的方法,因此它不起作用也就不足为奇了。

我还将假设,既然您在谈论旧版软件,那么您确实知道IteratorIterable


这里做了很多假设。

【讨论】:

  • 我可以纠正/改进什么?
【解决方案3】:

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

【讨论】:

  • 这与Set 上的Enumeration 无关。 你如何将元素放入Vector 并不重要,但这就是这个是,EnumerationVector 对象上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-21
  • 2014-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
相关资源
最近更新 更多