哈希表和哈希值究竟是什么关系?

哈希值

哈希值就是一个int数字, 取值范围是-21亿~21亿,一共有42亿中,我们可以把哈希值看出对象的一个标识(特征码)

在Object中,有一个方法叫做hashCode,可以获取对象的哈希值。
Object中的hashCode的哈希值是根据地址值计算的。

如果想要自己定义哈希值的计算规则,可以重写hashCode方法。

注意: 哈希值是对象的一个标识,但并不是一个唯一的标识,哈希值允许重复。

哈希值可以使用取余的方式进行归并.

比如把哈希值分成3种,可以将哈希值对3取余

哈希值%3 -> 0 1 2

归并后的结果就是哈希表

哈希表

哈希表是一个数组,数组中的每一个元素都是一个链表

在JDK8以及以后,如果链表的长度超过8,那么链表就会自动变成红黑树.

桶:哈希表中的数组的每一个元素都是一个桶.

哈希冲突:如果两个对象出现在了同一个桶内,就表示发生了哈希冲突.

加载因子:是一个百分比,默认是0.75,当哈希表的桶的使用比例超过加载因子,就会进行再哈希.

再哈希:再分类,对哈希表进行扩容.

猜你喜欢

转载自blog.csdn.net/numbbe/article/details/109322036