set 对象去重

java 专栏收录该内容
11 篇文章 0 订阅

  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

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值