hashcode()与equals()方法的重写

equals()是超类Object的一个基本方法。

public boolean equals(Object obj) {   return (this == obj);     }  

当类有自己的“逻辑相等”的概念,而且超类还没有覆盖equals来实现期望的行为。

默认情况下也就是从超类Object继承而来的equals方法与‘==’是完全等价的,比较的都是对象的内存地址,但我们可以重写equals方法,使其按照我们的需求的方式进行比较,如String类重写了equals方法,使其比较的是字符的序列,而不再是内存地址。

equals必须覆盖hashCode方法,否则会违反Object.hashCode的通用约定,从而导致该类无法结合所有的基于散列的集合一起正常工作。

猜你喜欢

转载自blog.csdn.net/yaotai8135/article/details/80529707