编辑
2024-02-03
面试题库
0
请注意,本文编写于 354 天前,最后修改于 212 天前,其中某些信息可能已经过时。

HashMap是基于Map接口的非同步实现(同步就是一个对象只能一个线程访问),它是以Key-value键值对的形式(封装成 Node (节点) 对象)存取数据的,线程不安全的集合,允许null键和null值,只能一个null键,但是可以有多个null值。

JDK7之前是数组+链表的形式(数组的每个位置都存储一个单向链表),JDK8后是数组+链表+红黑树的形式(链表的数据达到一定的阙值(8)就会转换成红黑树)。

容量:哈希表中数组的数量,默认初始容量是16(必须的2的倍数,提高计算机的执行效率)

加载因子:默认值为0.75

扩容阙值:容量 * 加载因子

非同步实现,底层通过一个modCount记录修改的次数,修改后回增加modCount值,迭代器初始时会把modCount值赋值给exceptedModCount,在迭代的过程中,如果二者的值不一样,则报异常。

本文作者:whitebear

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!