当override一个equals()方法后,也必需override hashCode()方法,规则如下:
Symmetry:两个引用,a和 b,a.equals(b) if and only if b.equals(a)
Reflexivity:所有非空引用, a.equals(a)
Transitivity:If a.equals(b) and b.equals(c), then a.equals(c)
Consistency with hashCode():两个相等的对象必须有相同的hashCode()值
Reflexivity:所有非空引用, a.equals(a)
Transitivity:If a.equals(b) and b.equals(c), then a.equals(c)
Consistency with hashCode():两个相等的对象必须有相同的hashCode()值
当没有override hashCode()方法时,在多数情况下是没有问题,但当把该对象用于集合类如HashMap的key时,则会出现问题。
本文阐述了在Java中覆盖equals方法时,同时覆盖hashCode方法的重要性。遵循一致性原则,确保两个相等的对象拥有相同的hash值,这对于使用这些对象作为HashMap等集合类的键时至关重要。
771

被折叠的 条评论
为什么被折叠?



