欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Enumeration和Iterator遍歷集合類詳解

 更新時間:2013年09月06日 17:23:46   作者:  
Enumeration和Iterator接口功能相似,而且Iterator的功能還比Enumeration多,那么為什么還要使用Enumeration

前言
在數(shù)據(jù)庫連接池分析的代碼實例中,看到其中使用Enumeration來遍歷Vector集合。后來就找了一些資料查看都有哪些方法可以遍歷集合類,在網(wǎng)上找到了如下的使用Enumeration和Iterator遍歷集合類的實例。不過這個實例中提到了Enumeration比Iterator的效率更高,其實并不是這樣子的,該實例是的時間測試太片面了, 因為數(shù)據(jù)量太少。隨著數(shù)據(jù)兩的增加,兩者之間的效率越來越接近,而不會出現(xiàn)倍數(shù)的比例。而且現(xiàn)在普遍都使用Iterator來遍歷集合類,只有特別明確聲明必須使用Enumeration的才會用該類遍歷集合。

代碼實例

復(fù)制代碼 代碼如下:

package edu.sjtu.erplab.hash;

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

//一個遍歷hashtable實例
public class TraveseHashTable {
    public static void main(String[] args) {
        //初始化創(chuàng)建hashtable
        Hashtable<String, String> ht = new Hashtable<String, String>();
        for (int i = 0; i < 10000; i++) {
            ht.put("Key=" + i, "Val=" + i);
        }

        // 1. 使用Enumeration
        long start = System.currentTimeMillis();
        Enumeration<String> en = ht.keys();//使用枚舉獲取key
        while (en.hasMoreElements()) {
            en.nextElement();
        }
        long end = System.currentTimeMillis();
        System.out.println("Enumeration keys costs " + (end - start)
                + " milliseconds");

        // 2. 使用Enumeration
        start = System.currentTimeMillis();
        Enumeration<String> en2 = ht.elements();//使用枚舉獲取這個key-value對
        while (en2.hasMoreElements()) {
            en2.nextElement();
        }
        end = System.currentTimeMillis();
        System.out.println("Enumeration elements costs " + (end - start)
                + " milliseconds");

        // 3. Iterator
        start = System.currentTimeMillis();
        Iterator<String> it = ht.keySet().iterator();//使用迭代器獲取這個key
        while (it.hasNext()) {
            it.next();
        }
        end = System.currentTimeMillis();
        System.out.println("Iterator keySet costs " + (end - start)
                + " milliseconds");

        // 4. Iterator
        start = System.currentTimeMillis();
        Iterator<Entry<String, String>> it2 = ht.entrySet().iterator();//使用迭代器獲取這個key-value對
        while (it2.hasNext()) {
            it2.next();
        }
        end = System.currentTimeMillis();
        System.out.println("Iterator entrySet costs " + (end - start)
                + " milliseconds");

    }
}


廢棄的接口:Enumeration
Enumeration接口是JDK1.0時推出的,是最好的迭代輸出接口,最早使用Vector(現(xiàn)在推薦使用ArrayList)時就是使用Enumeration接口進行輸出。雖然Enumeration是一個舊的類,但是在JDK1.5之后為Enumeration類進行了擴充,增加了泛型的操作應(yīng)用。

Enumeration接口常用的方法有hasMoreElements()(判斷是否有下一個值)和 nextElement()(取出當前元素),這些方法的功能跟Iterator類似,只是Iterator中存在刪除數(shù)據(jù)的方法,而此接口不存在刪除操作。

為什么還要繼續(xù)使用Enumeration接口
Enumeration和Iterator接口功能相似,而且Iterator的功能還比Enumeration多,那么為什么還要使用Enumeration?這是因為java的發(fā)展經(jīng)歷了很長時間,一些比較古老的系統(tǒng)或者類庫中的方法還在使用Enumeration接口,因此為了兼容,還是需要使用Enumeration。

List接口的常用子類
List接口常用的子類有ArrayList和Vector,兩者有許多相似的地方,下面給出這兩者之間的比較

相關(guān)文章

  • SpringBoot下使用自定義監(jiān)聽事件的流程分析

    SpringBoot下使用自定義監(jiān)聽事件的流程分析

    事件機制是Spring的一個功能,目前我們使用了SpringBoot框架,所以記錄下事件機制在SpringBoot框架下的使用,同時實現(xiàn)異步處理,這篇文章主要介紹了SpringBoot下使用自定義監(jiān)聽事件,需要的朋友可以參考下
    2023-08-08
  • javac、java打jar包命令實例

    javac、java打jar包命令實例

    這篇文章主要演示Java中使用命令打jar包的實例過程,很實用,希望能給大家做一個參考。
    2016-06-06
  • 解決javaWEB中前后臺中文亂碼問題的3種方法

    解決javaWEB中前后臺中文亂碼問題的3種方法

    這篇文章主要介紹了解決javaWEB中前后臺中文亂碼問題的3種方法,中文問題一直是很多人難以解決的問題,對這方面感興趣的朋友可以參考一下
    2015-11-11
  • SpringBoot中支持Https協(xié)議的實現(xiàn)

    SpringBoot中支持Https協(xié)議的實現(xiàn)

    本文主要介紹了SpringBoot中支持Https協(xié)議的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • java中staticclass靜態(tài)類詳解

    java中staticclass靜態(tài)類詳解

    這篇文章主要介紹了java中staticclass靜態(tài)類詳解,具有一定借鑒價值,需要的朋友可以了解下。
    2017-12-12
  • 關(guān)于Spring BeanPostProcessor的執(zhí)行順序

    關(guān)于Spring BeanPostProcessor的執(zhí)行順序

    這篇文章主要介紹了Spring BeanPostProcessor的執(zhí)行順序,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • SpringMVC異常處理器編寫及配置

    SpringMVC異常處理器編寫及配置

    這篇文章主要介紹了SpringMVC異常處理器編寫及配置,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • Guava的注解處理機制全面講解

    Guava的注解處理機制全面講解

    這篇文章主要為大家介紹了Guava的注解處理機制全面講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • Java排序算法總結(jié)之希爾排序

    Java排序算法總結(jié)之希爾排序

    這篇文章主要介紹了Java排序算法總結(jié)之希爾排序,較為詳細的分析了希爾排序的原理與java的實現(xiàn)技巧,需要的朋友可以參考下
    2015-05-05
  • Java實現(xiàn)顯示指定類型的文件

    Java實現(xiàn)顯示指定類型的文件

    這篇文章主要介紹了Java實現(xiàn)顯示指定類型的文件,需要的朋友可以參考下
    2014-03-03

最新評論