私は持っていMap<Date, String
ます。a, b
等しい2 つの Date オブジェクトがあります。key に関連付けられたマップに文字列値を配置しましたa
。a
次に、キーに関連付けられたマップ値を取得しようとしますが、入れた値b
のみを返します。キーa
で値を取得することは可能ですか? b
キーが単純な文字列の場合、これが可能であることはわかっています。これが他のタイプのオブジェクトでは機能しないのはなぜですか?
public class Main {
public static void main(String[] args) {
Map<Date, String> map = new HashMap<Date, String>();
Date a = new Date(20131105);
Date b = new Date(20131105);
map.put(a, "sweet");
System.out.println(map.get(a));
System.out.println(map.get(b));
}
static class Date {
private int ymd;
public Date(int ymd) {
this.ymd = ymd;
}
public int getYmd() {
return ymd;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Date) {
return ((Date) obj).ymd == ymd;
}
return false;
}
}
}
出力は次のとおりです。
sweet
null