HashSet<class> ,在调用add()方法后,它的底层会首先调用所添加对象(也就是前面尖括号中的class),然后再调用所添加对象的equals()方法。
单个字母就是字符型,查询一下Character类,就会发现它复写了Object根类中的hashCode()方法和equals()方法。其他包装类,如Integer,String等包装类都有自己的hashCode()和equals()方法。
如果是自建class的话,那么就需要复写这两个方法,否则,因为所有类都有一个根类,Object,它里面有hashCode()和equals(),如果不复写,就会直接继承这两个方法,先是hashCode()方法,然后是euqals()方法。一般来说,new出来的对象,如果不复写hashCode()方法,那么必定每一个都不相同,这样就失去了HashSet的作用(元素不重复)。 |