Java中---HashSet中的Set()方法不能加重复值的原因,唯一性

Hashset的方法首先会使用当前集合中的每一个元素和新添加的元素进行hash值比较
      如果hash值不一样,则直接添加新的元素
      如果hash值一样,比较地址值或者使用equals方法进行比较
      所有的比较结果都不一样则添加

唯一性原理:

 规则:新添加到HashSet集合的元素都会与集合中已有的元素一一比较

        首先比较哈希值(每个元素都会调用hashCode()产生一个哈希值)

             如果新添加的元素与集合中已有的元素的哈希值都不同,新添加的元素存入集合

             如果新添加的元素与集合中已有的某个元素哈希值相同,此时还需要调用equals(Object obj)比较

                   如果equals(Object obj)方法返回true,说明新添加的元素与集合中已有的某个元素的属性值相同,那么新添加的元素不存入集合

                   如果equals(Object obj)方法返回false, 说明新添加的元素与集合中已有的元素的属性值都不同, 那么新添加的元素存入集合

原文地址:https://www.cnblogs.com/kun19/p/11144847.html