HashSet数据存储方式详解

***HashSet数据存储方式

下图为一个HashSet数组的结构和三个元素,演示存储的过程


首先存入字符串“abc”;通过hashCode方法发现数组里没有96354这个哈希值,将这个哈希值存入数组,然后将元素"abc"以链表的方式连接在对应的哈希值数组下

然后重复操作同样存入元素"重地";

最后,存入元素“通话”,在调用方法hashCode返回哈希值的时候,发现数组中已经存在117935这个哈希值,要调用equals方法比较元素“重地”和“通话”,若返回false,存入“通话”,若返回ture,放弃存储。很明显,“通话”.equals("重地")返回false,因为哈希值一样所以“通话”以链表的形式挂在“重地”下面,形成链表

HashSet补充:为什么重写hashCode方法中用31?

posted @ 2022-04-05 21:21  无关风月7707  阅读(306)  评论(0编辑  收藏  举报