如何确保hashCode()与equals()一致?
当覆盖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?
}
}