page contents

HashMap 和 Hashtable 的区别

轩辕小不懂 发布于 2021-04-25 14:34
阅读 643
收藏 0
分类:Java开发

最佳答案 2021-04-25 14:57

664
Pack
Pack

相同点:

都是实现来Map接口(hashTable还实现了Dictionary 抽象类)。

不同点:

历史原因:Hashtable 是基于陈旧的 Dictionary 类的,HashMap 是 Java 1.2 引进的 Map 接口

的一个实现,HashMap把Hashtable 的contains方法去掉了,改成containsvalue 和containsKey。因为contains方法容易让人引起误解。

同步性:Hashtable 的方法是 Synchronize 的,线程安全;而 HashMap 是线程不安全的,不是同步的。所以只有一个线程的时候使用hashMap效率要高。

值:HashMap对象的key、value值均可为null。HahTable对象的key、value值均不可为null。

容量:HashMap的初始容量为16,Hashtable初始容量为11,两者的填充因子默认都是0.75。

HashMap扩容时是当前容量翻倍即:capacity * 2,Hashtable扩容时是容量翻倍+1 即:capacity * 2+1。

HashMap可以通过下面的语句进行同步:

Map m = Collections.synchronizeMap(hashMap);

请先 登录 后评论