对象在加入HashSet 时,HashSet 会先计算对象的hashCode值,来判断对象加入的位置,看该位置是否有值。如果没有,HashSet 会假设对象没有重复出现;如果有,这时候会调用equals() 方法来检查两个对象是否真的相同。 如果两者相同,HashSet 就不会让其加入操作成功;如果不同,就会重新散列到其他位置。 这样就大大减少了equals 的次数,相应就大大提高了执行速度。