Set集合添加数据流程

本文详细介绍了Set集合在添加数据时的工作流程,包括如何通过hashcode计算数据的存储位置,以及在相同位置出现重复数据时如何通过equals方法确保不重复。Set集合将每个元素视为一个单向链表,新插入的值会创建新的node节点,挤压原有的节点,从而实现不允许重复数据的特性。当竖向链表达到一定长度时,有助于提高equals方法的执行效率。
摘要由CSDN通过智能技术生成

首先通过实现集合类对象,set会创建一块空间set底层是个数组,但是每个元素为一个node链表

node

然后调用add(“hello”)方法添加数据,set会把每个添加的数据转化成hashcode码,然后对空间个数进行取余

(hello)hashcode   %    空间个数  =  数据索引位置

在此添加数据add("java"),如果返回的hashcode值与空间个数取余后与(hello)位置所相同,则会放在与hello同一位置,向下延伸形成竖行单向链表(set集合是不允许存在相同数据的,(java)得到与(hello)相同地址后,必须通过equals方法遍历整个竖行链表,防止重复,通过hashcode值对空间大小取余获得索引位置可以减少大量比较时间,只需要比较竖向列表中的值就好了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤鹤儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值