分类: Java
2010-11-25 11:52:50
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
for (int i = 0; i < 10000; i++) {
ht.put("Key=" + i, "Val=" + i);
}
// 1. Enumeration
long start = System.currentTimeMillis();
Enumeration
while (en.hasMoreElements()) {
en.nextElement();
}
long end = System.currentTimeMillis();
System.out.println("Enumeration keys costs " + (end - start)
+ " milliseconds");
// 2. Enumeration
start = System.currentTimeMillis();
Enumeration
while (en2.hasMoreElements()) {
en2.nextElement();
}
end = System.currentTimeMillis();
System.out.println("Enumeration elements costs " + (end - start) + " milliseconds");
// 3. Iterator
start = System.currentTimeMillis();
Iterator
while (it.hasNext()) {
it.next();
}
end = System.currentTimeMillis();
System.out.println("Iterator keySet costs " + (end - start) + " milliseconds");
// 4. Iterator
start = System.currentTimeMillis();
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哦。