zoukankan      html  css  js  c++  java
  • java collections读书笔记(5) Enumeration接口

    Enumeration,提供了遍历collection的一个方法,这是一个接口,其遵循的是Iterator设计模式。

    其源代码实现是:

    package java.util;

    /**
     * An object that implements the Enumeration interface generates a
     * series of elements, one at a time. Successive calls to the
     * <code>nextElement</code> method return successive elements of the
     * series.
     * <p>
     * For example, to print all elements of a <tt>Vector&lt;E&gt;</tt> <i>v</i>:
     * <pre>
     *   for (Enumeration&lt;E&gt; e = v.elements(); e.hasMoreElements();)
     *       System.out.println(e.nextElement());</pre>
     * <p>
     * Methods are provided to enumerate through the elements of a
     * vector, the keys of a hashtable, and the values in a hashtable.
     * Enumerations are also used to specify the input streams to a
     * <code>SequenceInputStream</code>.
     * <p>
     * NOTE: The functionality of this interface is duplicated by the Iterator
     * interface.  In addition, Iterator adds an optional remove operation, and
     * has shorter method names.  New implementations should consider using
     * Iterator in preference to Enumeration.
     *
     * @see     java.util.Iterator
     * @see     java.io.SequenceInputStream
     * @see     java.util.Enumeration#nextElement()
     * @see     java.util.Hashtable
     * @see     java.util.Hashtable#elements()
     * @see     java.util.Hashtable#keys()
     * @see     java.util.Vector
     * @see     java.util.Vector#elements()
     *
     * @author  Lee Boynton
     * @since   JDK1.0
     */
    public interface Enumeration<E> {
        /**
         * Tests if this enumeration contains more elements.
         *
         * @return  <code>true</code> if and only if this enumeration object
         *           contains at least one more element to provide;
         *          <code>false</code> otherwise.
         */
        boolean hasMoreElements();

        /**
         * Returns the next element of this enumeration if this enumeration
         * object has at least one more element to provide.
         *
         * @return     the next element of this enumeration.
         * @exception  NoSuchElementException  if no more elements exist.
         */
        E nextElement();
    }

    最常见的处理方式是:

    Enumeration enum = . . .;
    while (enum.hasMoreElements()) {
    Object o = enum.nextElement();
    processObject(o);
    }

    或者:

    for (Enumeration enum = . . .; enum.hasMoreElements(); ) {
    Object o = enum.nextElement();
    processObject(o);
    }

    Vector v = new Vector(3);
    v.add(new FileInputStream("/etc/motd"));
    v.add(new FileInputStream("foo.bar"));
    v.add(new FileInputStream("/temp/john.txt"));

    Enumeration enum = v.elements();
    SequenceInputStream sis = new SequenceInputStream(enum);
    InputStreamReader isr = new InputStreamReader(sis);
    BufferedReader br = new BufferedReader(isr);
    String line;
    while ((line = br.readLine()) != null) {
    System.out.println(line);
    }
    br.close();

  • 相关阅读:
    Typora标题自动编号+设定快捷键技巧
    配置redis 4.0.11 集群
    学会使用 Mysql show processlist 排查问题
    Golang学习的方法和建议
    日志文件删除shell脚本
    运维趋势2019年总结,运维就是要做到"技多不压身"
    我的xshell配色方案,绿色/护眼/留存/备份
    对于api接口的爬虫,通常的解决方法
    maven 打包和构建的Linux命令(mvn)
    Istio的流量管理入门-charlieroro编写
  • 原文地址:https://www.cnblogs.com/aomi/p/3135437.html
Copyright © 2011-2022 走看看