set 对象去重

  https://blog.csdn.net/lavorange/article/details/80420087   总结

  set集合 set<string> 是不会重复得,关于Set<obj> 对象塞进去得话会重复。

原因:实例化 HashSet对象实际是  new HashMap<>。HashMap插入值时判断key存在,要判断两点(1.hash值是否相同,看hashCode方法2.对应得值是否相同,看equal()方法),因为Set<obj>  是new HashMap 出来得 所以hash值绝对不相同,尽管值相同则不会判定为相同得对象。

----------------------------------------------------------------------

JDK8的默认hashCode的计算方法是通过和当前线程有关的一个随机数+三个确定值,运用Marsaglia's xorshift schema随机数算法得到的一个随机数。
————————————————

 

Integer和String hashCode计算,是之判断值是否相同,不会判断是否hash值相同,但是Obj就不同了

所以,要是想要Set<Obj>去重就得重载equals和hashCode方法。

 

 

版权声明:本文为CSDN博主「忆之独秀」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lavorange/article/details/80420087

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值