比较5种hashTable的遍历方式的效率

 在hashTable中插入1000000条数据然后遍历比较五种方式的效率。

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

public class TraverseHashTable {
	public static void main(String[] args) {
		Hashtable<String, String> hashtable = new Hashtable<String, String>();
		for (int i = 0; i < 1000000; i++) {
			hashtable.put("" + i, "aaa" + i);
		}
		long time = System.currentTimeMillis();

		// 第一种hashtable遍历方式
		System.out.println("第一种遍历方式");
		for (Iterator<String> iterator = hashtable.keySet().iterator(); iterator.hasNext();) {
			String key = iterator.next();
			hashtable.get(key);
//			System.out.print("key---" + key);
//			System.out.print("  value---" + );
		}
		System.out.println("");
		long time2 = System.currentTimeMillis();
		System.out.println("第一种遍历时间=" + (time2 - time));
		time = time2;

		// 第二种hashtable遍历方式
		System.out.println("第二种遍历方式");
		for (Iterator<Entry<String, String>> iterator = hashtable.entrySet().iterator(); iterator.hasNext();) {
			Entry<String, String> entry = iterator.next();
			String s=entry.getKey();
			String s2=entry.getValue();
//			System.out.print("key---" + entry.getKey());
//			System.out.print("value---" + entry.getValue());
		}
		System.out.println("");
		long time3 = System.currentTimeMillis();
		System.out.println("第二种遍历时间=" + (time3 - time));
		time = time3;

		// 第三种hashtable遍历方式
		System.out.println("第三种遍历方式");
		for (Map.Entry<String, String> entry : hashtable.entrySet()) {
			entry.getKey();
			entry.getValue();
//			System.out.print("key---" + entry.getKey());
//			System.out.print("value---" + entry.getValue());
		}
		System.out.println("");
		long time4 = System.currentTimeMillis();
		System.out.println("第三种遍历时间=" + (time4 - time));
		time = time4;
		
		
		// 第四种遍历方式
		System.out.println("第四种遍历方式");
		Enumeration<String> e = hashtable.keys();
		while (e.hasMoreElements()) {
			String key = e.nextElement();
			hashtable.get(key);
//			System.out.print("key---" + key);
//			System.out.print("value---" + hashtable.get(key));
		}
		System.out.println("");
		long time5 = System.currentTimeMillis();
		System.out.println("第四种遍历时间=" + (time5 - time));
		time = time5;
		
		
		// 第五中遍历方式(获取所有的值)
		System.out.println("第五种遍历方式");
		Enumeration<String> e2 = hashtable.elements();
		while (e2.hasMoreElements()) {
			String string = (String) e2.nextElement();
//			System.out.print(string);
		}
		System.out.println("");
		long time6 = System.currentTimeMillis();
		System.out.println("第五种遍历时间=" + (time6 - time));
	}
}

 结果显示第二三五中方式效率偏高些,且这三种方式效率相差无几。第一四中效率偏低。这个结果是经过几次此时得出来的。比较准确。

比较5种hashTable的遍历方式的效率