HashSet是用Hash算法实现存取对象,所以每个对象都有自己的hashCode;
1.当存储自定义类型元素时,在类中必须重写hashCode()和equals()方法:
将hashCode()方法重写为属性相同的对象值返回值一样,属性不同的返回值不一样;
将equals()方法重写为属性相同时返回true,属性不同时返回false。
2.存取对象时,HashSet会调用对象的hashCode来比较Set里面是否有hashcode一样的对象。
如果有,直接存入;
如果没有,就调用equals()方法继续比较hashcode一样的对象,如果返回值true就不存入,返回值false就存入。