hashmap和hashtable的区别

53 阅读1分钟

第11题(2023/9/16)

HashMap和HashTable有什么区别?其底层实现是什么?

答:

区别:

(1)HashMap没有synchronized修饰,线程不安全,而HashTable线程安全

(2)HashMap中key值和value值允许为空,HashTable不为空

底层实现:数组加链表

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

计算key的hash值,对数组长度取模,找到对应的数组下标

如果没有产生hash冲突,则直接创建node存入数组

产生hash冲突,使用拉链法解决冲突。当链表高度达到8,数组长度到64时,链表转换为红黑树,长度低于6后,红黑树重新转换为链表。

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

hashmap中的数组扩容机制与arrayList中的扩容机制一致