HashSet一个不包含重复元素的集合,为了保证元素唯一性,要通过元素的两个方法,HashCode和equals来完成,如果元素的HashCode值相同,才会判断equals是否为true,如果
元素的HashCode值不同,不会调用equals.
如果不重写HashCode,那么会出现相同的对象也将存入集合中(由于默认的HashSet是计算对象的地址值),而new一个对象,无论内容是否相同,地址值肯定不同,对于HashSet集合来说,这是不同的元素,而在我们的需求里,内容相同的元素,我们一般认为是同一个元素,当然,这取决开发者的需求,所以当用HashSet来存储对象时,必须重写HashCode. |