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