Hashtable类和HashMap用法几乎一模一样,底层都是采用哈希表接口,查询速度快,在很多情况下可以互用。
只不过Hashtable类继承于Dictionary类并实现了Map接口,HashMap类只是Map接口的实现类。另外Hashtable的方法添加了Synchronized关键字确保线程同步检查,效率较低。
比如:put(K key, V value)方法就增加了synchronized同步标记。
相比较于HashMap,Hashtable还包含了许多传统的方法,虽然这些方法不属于集合框架。
【示例】Hashtable类传统方法演示
public class Test {
public static void main(String[] args) {
// 创建Hashtable对象
Hashtable<String, String> ht = new Hashtable<String, String>();
// 添加键值对
ht.put("cn", "China");
ht.put("jp", "Japan");
ht.put("us", "America");
// 遍历所有的key,keys()方法类似于keySet()方法
Enumeration<String> keys = ht.keys();
while(keys.hasMoreElements()) {
String key = keys.nextElement();
System.out.println(key + "-->" + ht.get(key));
}
// 遍历所有的value,elements()方法类似于values()方法
Enumeration<String> elements = ht.elements();
while(elements.hasMoreElements()) {
String element = elements.nextElement();
System.out.println("value: " + element);
}
}
}
【新手建议】HashMap与HashTable的区别?
- HashMap:线程不安全,效率高,允许key或value为null。
- Hashtable:线程安全,效率低,不允许key或value为null。
ps:如需最新的免费文档资料和教学视频,请添加QQ群(627407545)领取。