我们向HashSet
中添加元素a,首先调用a
所在类的hashCode()
,计算a的哈希值,此哈希值接着通过某种算法算出在HashSet
数组中的存放位置(即为索引位置),判断数组此位置上是否已有元素:
- 若无元素,则
a
添加成功。 - 若有元素(或以链表形式存在的多个元素),则比较
a
与b
的hash
值:- 若不相同,则
a
添加成功。 - 若相同,则调用
a
所在类的equals()
,- 返回
true
,a
添加失败。 - 返回
false
,a
添加成功。
- 返回
- 若不相同,则