1、首先理解hash值
哈希值简单理解为 记录在结构中的随机相对位置。在java 中是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值(通过哈希算法)。
Object类中有一个方法可以获取哈希值。
public int hashCode() 返回对象的哈希码值。
哈希表结构是个数组,哈希表中的哈希值由对象的hashCode()直接或间接而来。
2、
HashSet集合中要保证元素的唯一性,就需要重写hashCode()和equals()方法,因为向集合添加元素时,首先会判断元素的hash值是否相同,如果不同,则可以添加;如果hash值相同,则比较元素内容,元素内容不同,则可以添加。如果元素(对象)hash值和元素(对象)内容都相同,说明是重复元素,则添加不进去。