比较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));
}
}
结果显示第二三五中方式效率偏高些,且这三种方式效率相差无几。第一四中效率偏低。这个结果是经过几次此时得出来的。比较准确。