VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Java教程 >
  • Java面试题(十一):HashMap和HashTable的区别

作者:@小灰灰
本文为作者原创,转载请注明出处:https://www.cnblogs.com/liuhui0308/p/14907559.html

回到顶部(go to top)

1. HashMap和HashTable的区别

区别:

(1)HashMap方法没有synchronized修饰,线程非安全,HashTable线程安全。

(2)HashMap允许key和value为null,而HashTable不允许。

底层实现:数组+链表实现

jdk8开始链表高度达到8,数组长度超过64,链表转变为红黑树,元素以内部类Node节点存在。

计算key的hash值,二次hash然后对数组长度取模,对应到数组下标。

如果没有产生hash冲突(下标位置没有元素),则直接创建Node存入数组。

如果发生hash冲突,先进行equals比较,相同则取代该元素,不同,则判断链表高度插入链表,链表高度达到8,并且数组长度到64则转变为红黑树,长度低于6则将红黑树转回链表。

key为null,存在下标为0的位置。


相关教程