java.lang.Object の equals() 関数をオーバーライドする場合、javadoc は次のように提案しています。
通常、このメソッドがオーバーライドされるときは常に、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?
}
}