在覆盖java.lang.Object的equals() 函数时,javadocs建议,
通常情况下需要覆盖hashCode方法,以便维护hashCode方法的一般契约,该契约规定相等的对象必须具有相等的哈希码。
hashCode()方法必须为每个对象返回一个唯一的整数(当基于内存位置比较对象时,这很容易做到,只需返回对象的唯一整数地址)
如何覆盖hashCode()方法,使之仅基于该对象的属性返回唯一的整数?
public class People{
public String name;
public int age;
public int hashCode(){
// How to get a unique integer based on name and age?
}
}
/*******************************/
public class App{
public static void main( String args[] ){
People mike = new People();
People melissa = new People();
mike.name = "mike";
mike.age = 23;
melissa.name = "melissa";
melissa.age = 24;
System.out.println( mike.hasCode() ); // output?
System.out.println( melissa.hashCode(); // output?
}
}