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

  • 相关阅读:
    【实战】一次简单的js接口漏洞挖掘
    【实战】Location 302跳转 + CRLF 场景下的XSS
    【实战】权限绕过小结
    【实战】简单的API接口FUZZ小案例
    【实战】一次有趣的逻辑漏洞挖掘
    【实战】一个简单的SQL注入绕过
    【实战】springboot actuator未授权访问之trace接口泄漏敏感信息
    【实战】springboot actuator未授权访问之heapdump敏感信息提取
    层次分析法AHP
    pyppeteer(1)
  • 原文地址:https://www.cnblogs.com/aomi/p/3135437.html
Copyright © 2011-2022 走看看