回归JDK源代码(2)Enumeration<E>接口

现在的Java程序员习惯使用Iterator<E>接口或者增强for循环来遍历集合。如果回到JDK 1.0,Enumeration接口则是遍历向量、哈希表的不二之选。本节就解读和翻译一下Enumeration<E>接口的源代码。当然,有一点还是得再强调一下:Enumeration<E>的泛型实在JDK 1.5时加上去的,最初的版本是没有泛型的。

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. * 实现了Enumeration接口的对象自动生成一系列元素,一次一个。 * 逐次调用nextElement()方法,依次返回系列元素。
 * <p>
 * For example, to print all elements of a <tt>Vector&lt;E&gt;</tt> <i>v</i>: * 举例而言,打印Vector<V>中的所有元素
 * <pre>
 *   for (Enumeration<E> 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> * 所有的方法都被提供来枚举Vector、hashtable中的键、值的元素。 * Enumeration<E>也被用来指定一个到SequenceInputStream的输入流。 *
 * 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.
 * 提示:Enumeration<E>接口的功能已经被Iterator<E>接口赋复制。除此之外,Iterator<E>接口 * 添加了一个可选删除(元素)操作,以及更加简短的方法名。新的实现应该优先考虑使用Iterator<E> * 接口,而非Enumeration<E>。 *
 * @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.     * 当且仅当此枚举对象还有至少一个元素可以提供,返回true;否则,返回false。
     */
    boolean hasMoreElements();   // 别少了s,老外写代码是很重视单复数滴

    /**
     * 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.     * 如果没有更多的元素存在,抛出NoSuchElementException异常
     */
    E nextElement();
}

阅读完Enumeration<E>的源代码和翻译之后,想必您和我都有同一个想法:这玩意并没有什么*用。

那么为什么我们还要去了解这个接口的源代码呢?作用就是、、、能够装逼。

时间: 2024-11-10 07:04:04

回归JDK源代码(2)Enumeration<E>接口的相关文章

调试JDK源代码-一步一步看HashMap怎么Hash和扩容

调试JDK源代码-一步一步看HashMap怎么Hash和扩容 调试JDK源代码-ConcurrentHashMap实现原理 调试JDK源代码-HashSet实现原理 调试JDK源代码-调试JDK源代码-Hashtable实现原理以及线程安全的原因 还是调试源代码最好. 开发环境  JDK1.8+NetBeans8.1 说明:调试HashMap的 public V put(K key, V value) 方法并查看key的值时不能显示变量的值,原因在于oracle提供的jre中rt.jar不带de

JDK源代码学习系列04----ArrayList

                                                                         JDK源代码学习系列04----ArrayList 1.ArrayList简单介绍 ArrayList是基于Object[] 数组的,也就是我们常说的动态数组.它能非常方便的实现数组的添加删除等操作. public class ArrayList<E> extends AbstractList<E> implements List<

如何在Eclipse下查看JDK源代码

在Eclipse中查看JDK类库的源代码!!! 设置: 1.点 "window"-> "Preferences" -> "Java" -> "Installed JRES" 2.此时"Installed JRES"右边是列表窗格,列出了系统中的 JRE 环境,选择你的JRE,然后点边上的 "Edit...", 会出现一个窗口(Edit JRE) 3.选中rt.jar文件

Java jdk源代码的Math包

jdk源码学习java.math包 阅读JDK源代码java.math中的 java.math.BigDecimal java.math.BigInteger java.math.BitSieve java.math.MathContext java.math.MutableBigInteger java.math.RoundingMode java.math.SignedMutableBigInteger 1.java.math.BigDecimal 不可变的.任意精度的有符号十进制数.Big

通过分析 JDK 源代码研究 TreeMap 红黑树算法实现

TreeMap 的实现就是红黑树数据结构,也就说是一棵自平衡的排序二叉树,这样就可以保证当需要快速检索指定节点. TreeSet 和 TreeMap 的关系 为了让大家了解 TreeMap 和 TreeSet 之间的关系,下面先看 TreeSet 类的部分源代码: public class TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>, Cloneable, java.io.Serializab

Java提高篇——通过分析 JDK 源代码研究 Hash 存储机制

阅读目录 通过 HashMap.HashSet 的源代码分析其 Hash 存储机制HashMap 的存储实现Hash 算法的性能选项HashMap 的读取实现HashSet 的实现 HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员,其中 HashMap 是 Map 接口的常用实现类,HashSet 是 Set 接口的常用实现类.虽然 HashMap 和 HashSet 实现的接口规范不同,但它们底层的 Hash 存储机制完全一样,甚至 H

深入JDK源码之Observer接口和Observable类实现观察者模式

何为观察者模式 观察者模式(有时又被称为发布/订阅模式)是软体设计模式的一种.在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知.这通常透过呼叫各观察者所提供的方法来实现.此种模式通常被用来事件处理系统. 使用它有何好处 观察者模式(Observer)完美的将观察者和被观察的对象分离开.举个例子,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在界面上.面向对象设计的一个原则是:系统中的每个类将重点放在某

通过分析 JDK 源代码研究 Hash 存储机制--转载

通过 HashMap.HashSet 的源代码分析其 Hash 存储机制 集合和引用 就像引用类型的数组一样,当我们把 Java 对象放入数组之时,并不是真正的把 Java 对象放入数组中,只是把对象的引用放入数组中,每个数组元素都是一个引用变量. 实际上,HashSet 和 HashMap 之间有很多相似之处,对于 HashSet 而言,系统采用 Hash 算法决定集合元素的存储位置,这样可以保证能快速存.取集合元素:对于 HashMap 而言,系统 key-value 当成一个整体进行处理,

通过分析 JDK 源代码研究 TreeMap 红黑树算法实

TreeMap 和 TreeSet 是 Java Collection Framework 的两个重要成员,其中 TreeMap 是 Map 接口的常用实现类,而 TreeSet 是 Set 接口的常用实现类.虽然 HashMap 和 HashSet 实现的接口规范不同,但 TreeSet 底层是通过 TreeMap 来实现的,因此二者的实现方式完全一样.而 TreeMap 的实现就是红黑树算法. TreeMap 的实现就是红黑树数据结构,也就说是一棵自平衡的排序二叉树,这样就可以保证当需要快速