HashMap与HashTable的区别?

相同点

  • 都实现Map、Cloneable接口。
  • 内部都采用数据+链表的方式进行存储。
  • 都有loadFactory,负载因子(size/capacity),都默认为0.75,当超过这个值,会自动扩容,且index会改变。

不同点

HashMap

  • 是线程不安全的,
  • HashMap存储时允许键值为空。
  • 初始容量为16,扩容方式以 newSize = oldSize *2;
  • 计算index方法 index = hash & (table.length -1)

HashTable

  • 是线程安全的,大部分方法者有synchronized关键字修饰,但是它是比较早的类,在java 5之后提供了ConcurrentHashMap,可以代替它。
  • HashTable 不允许 key value 为null。
  • 初始容量为11,扩容方式以 newSize = (oldCapacity << 1) + 1
  • 计算index方法 index = (hash & 0x7FFFFFFF) % tab.length
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容