一、前言
HashMap底层源码涉及相关内容还是非常的多的
一般“高开”都是尝试去了解这一主题
但是面试环节问题是有局限性的,所以常问的我们可以进行归纳下
二、开胃小菜
原理(需要掌握*****)
从上图我们可以发现数据结构由数组+链表组成,一个长度为16的数组中,每个元素存储的是一个链表的头结点。那么这些元素是按照什么样的规则存储到数组中呢。一般情况是通过hash(key.hashCode())%len获得,也就是元素的key的哈希值对数组长度取模得到。比如上述哈希表中,12%16=12,28%16=12,108%16=12,140%16=12。所以12、28、108以及140都存储在数组下标为12的位置。