对HashSet存储原理的理解

HashSet原理

对HashSet存储原理的理解
对HashSet存储原理的理解
对HashSet存储原理的理解

hashSet的底层是直接调用hashMap来实现存储,其值作为hashMap的值。

为什么要采用hash算法?

解决的是唯一性
存储数据,底层采用数组

采用数组怎么判断唯一性?

数组可以遍历,但是效率低下
所以,使用hash算法,对存储对象使用hashcode,然后跟数组长度-1做位运算,得到存储下标,没有其他元素,直接存储,不用比较。
随着元素不断增加,会出现“哈希冲突”,hash值是相同的,这个时候需要比较,使用equals方法比较。
对HashSet存储原理的理解
equals相等不插入,不相等则形成链表。

哈希表是什么?

本质是一个数组,而数组的元素是链表。
对HashSet存储原理的理解
以上是JDK1.7的实现

JDK1.8优化后:随着元素不断增加,链表会越来越长,会优化成红黑树。