在add(对象时)重写hashCode()方法是为了提高效率,不重写会调用父类的Object中的hashCode(),
HashSet集合添加元素时会比较哈希值再使用equals比较对象的值:
当一个元素进来时,会与集合内部进行哈希值比较,如果无相同,不调用equals,则添加并返回true(表示添加),
如果与集合内部元素有相同哈希值,则使用equals方法,进行比较,比较得出true,相同,则不添加并方法false(表示不添加)。
而equals重写,原Object的equals方法比较的是地址,重写后比较对象的值 。 |