• 欢迎访问web前端中文站,JavaScript,CSS3,HTML5,web前端demo
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏web前端中文站吧

java 中 HashMap 和 Hashtable 之间的不同

JAVA web前端中文站 3年前 (2017-05-15) 1240次浏览 已收录 0个评论

关于 HashMap 和 Hashtable 之间的不同?网上有大批的网友在讨论,而在我看来,他们都没有 Stackoverflow 上一位网友总结的全面。因此在这里摘录一下,方面自己加深理解!

更多精彩内容请看 web 前端中文站
http://www.lisa33xiaoq.net 可按 Ctrl + D 进行收藏

链表的存储结构

java 中 HashMap 和 Hashtable 之间的不同

HashMap 的存储结构

java 中 HashMap 和 Hashtable 之间的不同

从上面的两张图中已能看出它们的不同。下面我们看看非多线程应用中使用哪个更有效率?

Java 中 HashMap 和 HashTable 的不同点

  1. Hashtable 是同步的,然而 HashMap 不是。 这使得 HashMap 更适合非多线程应用,因为非同步对象通常执行效率优于同步对象。
  2. Hashtable 不允许 null 值和键。HashMap 允许有一个 null 键和人一个 NULL 值。
  3. HashMap 的一个子类是 LinkedHashMap。所以,如果想预知迭代顺序(默认的插入顺序),只需将 HashMap 转换成一个 LinkedHashMap。用 Hashtable 就不会这么简单。
  4. HashMap 和 HashTable 继承的类不一样

     public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, java.io.Serializable public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable 
  5. 同步机制不一样。HashMap 没有提供同步机制,是线程不安全的,需要自己在外面写同步代码,HashTable 部分方法上有自己的 synchronize 同步,是线程安全的。
  6. HashMap 中没有 contains()方法。
  7. 它们的数组初始化大小和扩容方式不一样,HashTable 中 hash 数组默认大小是 11,增加的方式是 old*2+1。HashMap 中 hash 数组的默认大小是 16,而且一定是 2 的指数。 

因为同步对你来说不是个问题,我推荐使用 HashMap。如果同步成为问题,你可能还要看看 ConcurrentHashMap。

【注:本文源自网络文章资源,由站长整理发布】

参考资料


web 前端中文站 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:java 中 HashMap 和 Hashtable 之间的不同
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址