我们以HashSet如何查重来讲:
当我们把对象加HashSet时,HashSet会先获取该对象的hashCode值,来计算该对象的加入位置{(n-1)&hash},同时与已经加入的对象的hashcode值做比较;若没有重复的,就正常添加;若有重复的,会调用equals()方法来检查hashcode值相等的对象内容或内存地址是否真的相同;若相同,加入操作失败;若不同就会重新散列到其他位置
这样就会减少equals()的执行次数,减少性能消耗;
当我们把对象加HashSet时,HashSet会先获取该对象的hashCode值,来计算该对象的加入位置{(n-1)&hash},同时与已经加入的对象的hashcode值做比较;若没有重复的,就正常添加;若有重复的,会调用equals()方法来检查hashcode值相等的对象内容或内存地址是否真的相同;若相同,加入操作失败;若不同就会重新散列到其他位置
这样就会减少equals()的执行次数,减少性能消耗;