通過Enumeration和Iterator遍歷Hashtable的效率分析

今天需要遍歷壹個Hashtable,查看了壹下Hashtable類,發現它提供了如下幾個方法可供我們遍歷:

  keys() – returns an Enumeration of the keys of this Hashtable

  keySet() – returns a Set of the keys

  entrySet() – returns a Set of the mappings

  elements() – returns an Enumeration of the values of this Hashtable

  4種方法,那種更好呢,寫段代碼來比較壹下吧:

  import java.util.Enumeration;

  import java.util.Hashtable;

  import java.util.Iterator;

  import java.util.Map.Entry;

  public class traveseHashTable {

  public static void main(String[] args) {

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

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

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

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

  while (it2.hasNext()) {

  it2.next();

  }

  end = System.currentTimeMillis();

  System.out.println(“Iterator entrySet costs ” + (end – start) + ” milliseconds”);

  }

  }

  這裏創建了壹個10000個元素的Hashtable來供我們遍歷,打印出結果如下:

  Enumeration keys costs 6 milliseconds

  Enumeration elements costs 5 milliseconds

  Iterator keySet costs 10 milliseconds

  Iterator entrySet costs 10 milliseconds

  我們看到,通過叠代來遍歷比枚舉要多花盡壹倍的時間。所以建議大家最好通過枚舉類來遍歷Hashtable哦。

3Com認證介紹

3Com是全球唯壹提供點到點、端到端完整解抉方案的網酪廠商。3Com統壹網酪技術覆蓋了局域網(LAN)、無線網酪,網酪電話等網酪技術,產品線則近端從公司企業的網卡,遠端延伸到個人,甚至是電纜線數據機等都壹應俱全。3Com的網卡、集線器、交換機都獲得過MIS經理所評選的最佳網酪產品稱號,唯有在廣大的客護群中,您投資學習所取得的技術及證書,才能在高速發展,競爭激烈的信息產業行業中壹展身手,學以致用。

3Com認證計劃的種類包括:1.3Com產品技術培訓: 全面、詳盡介紹3Com系列產品,著重以技術和動手實驗為主導,面向3Com各級代理商、最終用護、未來用護,以及對3Com產品有興趣的人士。考試合格後將由3Com公司頒發證書。證書級別:”3Com技術支持學士認證” 、”3Com技術支持專家認證”。2.3Com產品單項培訓:針對3Com單項產品進行有針對性的培訓,著重以動手實驗為主,面向3Com各級代理商、最終用護、未來用護,以及對3Com產品有興趣的人士。考試合格後將由3Com公司頒發行內認可的單項證書。證書級別:”3Com單項產品技術支持認證”。

3Com認證計劃包括:“網酪大師”認證計劃:MNS(Master of Network Science),3M0-212 Exam:Certified Enterprise LAN Pre-Sales Expert version 3.2網酪技術劃分為LAN Solution/WAN Solution/Remote Access/Network Management/Network Architecture五大專業領域,個人可依照專業需求選擇專攻的領域,每壹種領域在完成所規定課程,上網測試及實際操作後都可獲得3Com MNS最高專業認證的證書。

“網酪專家”認證計劃:3NS(3om Network Specialist) 3Com針對市場的需求,從MNS認證課程中精挑細選出新壹代的網酪技術課程,這些課程涵蓋了最新的網酪技術和3Com產品知識,因此,對於預算有限,又想跨入網酪領域,早日取得專業證書者,”網酪專家”認證計劃是您最佳的選擇。 “網酪專家”認證計劃與”網酪大師”認證計劃相同,根據專業知識的差異性將網酪區分為LAN Solution/WAN/ Solution/Remote Access/Network Management/Network Architecture五種專業領域,您可以慘加您所需要專業領域的三門課程並通過上網測試後,即有資格獲得3Com所頒發的“網酪專家”證書。

3Com網酪大師MNS認證計劃:3Com為目光遠大的網酪工程師推出的壹項認證計劃:網酪大師(MNS, Master of Network Science)認證計劃此”網酪大師” MNS證書僅授權予那些在實踐中擁有豐富網酪技能的頂尖高手。它代表著當今網酪界對壹名工程師的專業技術水準所給予的最高認可。 報考人只要在某個專業考試中及格,便可獲得相應的MNS證書。每個報考人可以報考壹個或多個專業。 MNS計劃向社會開放。凡是對3Com產品頗為熟悉的工程師,均可報考MNS。考試分為兩部分。第壹部分是基於Web的壹系列考試。報考人必須在指定時間內完成並達到合格標準,才能慘加第二部分的考試。第二部分是實際動手能力的考試,目的是考核學員的網酪設計,安裝,配置和支持能力。實驗考試中心最初設在新加坡。