类重写了equals()方法也必须重写hashcode()方法,否则会导致该类无法与基于散列值的集合(HashMap、HashSet、HashTable)一起正常使用。 hashcode()方法遵循的原则: 1、同一个对象多次调用hashcode(),返回的结果必须相等。 2、两个对象equals()方法相等,hashcode()也必须相等。 3、两个对象equals()方法不等,hashcode()不要求必须不等,但是应尽可能的分散以提高散列表的效率 如何重写hashcode(): 1.给int变量赋值 2.为对象中每个有意义的字段计算出一个散列码 3.合并 4.返回结果 5.验证结果,确保相同的对象有相同的散列码 demo: public class Test { private String s = null; private int id = 0; . . . public int hashCode() { int result = 17; result = 37 * result + s.hashCode(); result = 37 * result + id; return result; } }