set集合李的元素是是通过元素的两个方法,hashCode和equals是否为true来完成判断两个元素是否重复.
如果元素的HashCode值相同,才会判断equals是否为true,
如果元素的HashCode值不同,才会调用equals.
所以我们在建立对象,并需要存储进集合中时,一般都要复写他们的HashCode和equals方法,因为如果不复写,往往都是以内存地址值来判断hash值,就算内容一样,也视为不同对象,不符合我们的应用要求.
用毕老师的话来说,要么你让Set集合里的元素具备比较性,也就是实现Comparable接口,覆盖hashCode和equals方法.
要么就自定义比较器,实现Comparetor接口.然后将自定义比较器传给set集合.
|