从头开始学java--HashSet是如何保证不重复的

以上是HastSet的空构造器,以及add方法

可以看出,当HashSet hashSet = new HashSet();时,

创建了 hashmap:private transient HashMap<E,Object> map;

在add(E e)方法中,将e 作为参数存入HashMap的key中,

所以不会重复( HashMap 比较key是否相等是先比较 hashcode 在比较 equals )

因为hashSet的存储原理是调用hashMap的put 方法,所以同样调用了hashCode方法存储值的位置,如图:

以上为hashMap的put方法,可看出,通过调用hash(Object key)方法,生成key对应的hashCode,所以hashMap和hashSet都调用hashCode方法,都根据所生成的hashCode存储值

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值