15. Hashmap的原理
首先要清楚的知道Hashmap是基于哈希表来存储空间的。
所以我们需要了解哈希表的原理也就明白了Hashmap的原理。
哈希表
哈希表有多种不同的实现方法,我接下来解释的是最常用的一种方法—— 拉链法,我们可以理解为“链表的数组” ,如图:
从上图我们可以发现哈希表是由数组+链表组成的,一个长度为16的数组中,每个元素存储的是一个链表的头结点。那么这些元素是按照什么样的规则存储到数组中呢。
一般任何元素都会有hashcode码。通过每个元素的hashcode码来进行比较。比如:hashcode%16 最后余的值就是放入这个数组的下标的位置。这样存储基本会保证每个数组都会有少量的元素,方便存储和利用。且在一定元素数量下,哈西表还会扩展。方便存储。
至于对象的比较将会再用equals()方法进行比较。