set的性质
- 对象的相等性
引用到同一个同一个堆上面的两个引用是相等的。对两个对象调用hashcode方***得到相同的结果。 - 如果想要两个不同的对象相等,必须覆盖object继承下来的equls和hashcode方法
hashset实现原理
四、HashSet到底是如何判断两个元素重复
通过hashCode方法和equals方法来保证元素的唯一性,add()返回的是boolean类型,判断两个元素是否相同,先要判断元素的hashCode值是否一致,只有在该值一致的情况下,才会判断equals方法,如果存储在HashSet中的两个对象hashCode方法的值相同equals方法返回的结果是true,那么HashSet认为这两个元素是相同元素,只存储一个(重复元素无法存入)。
注意:HashSet集合在判断元素是否相同先判断hashCode方法,如果相同才会判断equals。如果不相同,是不会调用equals方法的。
HashSet 和ArrayList集合都有判断元素是否相同的方法,
boolean contains(Object o)
HashSet使用hashCode和equals方法,ArrayList使用了equals方法
五、HashSet存储自定义对象
问题:现在有一批数据,要求不能重复存储元素,而且要排序。ArrayList,LinkedList不能去除重复数据。HashSet可以去除重复,但是无序。
原文链接:https://blog.csdn.net/benben513624/article/details/81565168