Java集合之Enumeration

Enumeration

Enumeration 接口是Iterator迭代器的“古老版本”,从JDK 1.0开始,Enumeration接口就已经存在了(Iterator从JDK 1.2才出现)。Enumeration接口只有两个方法。

boolean hasMoreElements()
如果此迭代器还有剩下的元素,则返回true
Object nextElement()
返回该迭代器的下一个元素,如果还有的话(否则抛出异常)

通过这两个方法不难发现,Enumeration接口中的方法名称难以记忆,而且没有Iterator的remove()方法。如果现在编写Java程序,应该尽量采用Iterator迭代器,而不是用Enumeration迭代器。

之所以保留Enumeration接口的原因,主要为了照顾以前那些“古老”的程序,那些程序里大量使用Enumeration接口,如果新版本的Java里直接删除Enumeration接口,将会导致那些程序全部出错。

计算机行业有一条规则:加入任何规则都必须慎之又慎,因为以后无法删除规则。

实际上,Vector(包括其子类Stack)、Hashtable两个集合类,以及另一个极少使用的BitSet,都是从JDK1.遗留下来的集合类,而Enumeration接口可用于遍历这些“古老”的集合类。对于ArrayList、HashMap等集合类,不再支持使用Enumeration迭代器。

示例:

package com.collections;

import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.Vector;

public class EnumerationTest {

    public static void main(String[] args) {

        Vector<String> v = new Vector();
        v.add("Java");
        v.add("C");

        Hashtable table = new Hashtable();
        table.put("语文", 99);
        table.put("数学", 99);
        Enumeration eVec=  v.elements();

        while(eVec.hasMoreElements()){
            System.out.println(eVec.nextElement());
        }

        Set<Map.Entry<String,Integer>> set = table.entrySet();
         Iterator<Entry<String, Integer>> iter = set.iterator();
        while(iter.hasNext()){
            Entry<String, Integer> m = iter.next();
            System.out.println(m.getKey());
            System.out.println(m.getValue());
        }
    }
}

Enumeration迭代器只能遍历Vector、Hashtable这种古老的集合,因此通常不要使用它,除非在某些极端情况下,不得不使用Enumeration,否则都应该选择Iterator迭代器。

Even a small star shines in the darkness.
星星再小,也会发光。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值