做开发有很久了,但一致没有接触到需要手动重写 equals 的场景,平时直接用 lombok 的 @Data 代替了。
今天用到了,只要用一个对象中几个字段判断对象相等,需要单独重写 equals
原因
因为Hash比equals方法的开销要小,速度更快,所以在涉及到hashcode的容器中(比如HashSet),判断自己是否持有该对象时,会先检查hashCode是否相等,如果hashCode不相等,就会直接认为不相等,并存入容器中,不会再调用equals进行比较。
这样就会导致,即使该对象已经存在HashSet中,但是因为hashCode不同,还会再次被存入。
2024/3/8...大约 2 分钟