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