资料整理自:一个 HashMap 跟面试官扯了半个小时 一、HashMap的内部数据结构 JDK1.8及以上,内部使用数组 + 链表 / 红黑树。 注意:链表长度 > 8 && 数组大小 >= 64为真时,单向链表才转换成红黑树。 二、HashMap的数据插入原理 过程详解: 判断数组是否为空,为空进行初始化; 不为空,计算k的hash值,通过(n - 1) & hash计算应当存放在数组中的下标index; 查看table[index]是否存在数据,没有数据就构造一个Node节点存放在table[index]中; 存在数据,说明发生了hash冲突, ...