15. Hashmap的原理

来源:互联网 发布:cef js 交互 编辑:程序博客网 时间:2024/06/04 17:56

首先要清楚的知道Hashmap是基于哈希表来存储空间的。

所以我们需要了解哈希表的原理也就明白了Hashmap的原理。


哈希表

哈希表有多种不同的实现方法,我接下来解释的是最常用的一种方法—— 拉链法,我们可以理解为链表的数组 ,如图:


从上图我们可以发现哈希表是由数组+链表组成的,一个长度为16的数组中,每个元素存储的是一个链表的头结点。那么这些元素是按照什么样的规则存储到数组中呢。

一般任何元素都会有hashcode码。通过每个元素的hashcode码来进行比较。比如:hashcode%16  最后余的值就是放入这个数组的下标的位置。这样存储基本会保证每个数组都会有少量的元素,方便存储和利用。且在一定元素数量下,哈西表还会扩展。方便存储。

至于对象的比较将会再用equals()方法进行比较。