Set判断俩个对象相同不是使用==运算符,而是根据equals方法。也就是说,如果只要俩个对象用equals方法比较返回true,Set就不会接受这个对象,反之,只要来个对象用equals方法返回false,Set就会接受这个对象(甚至这俩个对象是同一个对象,set也可以把他们当成俩个对象)。
HashSet按Hash算法来存储集合中的元素,因此具有良好的存取和查找性能。
当向HashSet集合中存入一个元素时,HashSet会调用该对象的HashCode()方法来得到该对象的hashCode值,
然后根据该HashCode的值来确定该对象在HashSet中存储位置,如果俩个元素通过equals方法比较返回true,但是他们的hashCode()方法返回的值不相等,HashSet将会把他们存储在不同的位置,也就可以添加成功了。
所以说:HashSet集合判断俩个元素相等的标志是:俩个对象通过equals方法比较相等,并且俩个对象的hashCode方法返回值也相等