應用程序會說如果用戶猜測他已經引入了兩種顏色組合。獲取哈希映射中的等價元素
我使用HashMap來保存「TwoColors」對象和布爾值。該TwoColors類是下一個:
public class TwoColors{
public MyColor color1;
public MyColor color2;
public TwoColors(MyColor color1, MyColor color2){
this.color1 = color1;
this.color2 = color2;
}
@Override
public boolean equals(Object obj) {
TwoColors o = (TwoColors) obj;
return color1 == o.color1 && color2 == o.color2;
}
}
而且MyColor是
public enum MyColor{
RED,BLUE,YELLOW,BROWN;
}
我測試把一個兩色對象密鑰和打印其值
public static void main(String[] args){
HashMap<TwoColors, Boolean> hash = new HashMap<TwoColors, Boolean>();
hash.put(new TwoColors(MyColor.RED,MyColor.BLUE),new Boolean(true));
System.out.println(hash.get(new TwoColors(MyColor.RED,MyColor.BLUE)));
}
上面的代碼輸出null
枚舉儘管我已經覆蓋了TwoColors的equals方法。任何想法我在這裏想念什麼?
如果重寫等於要重寫了hashCode以及一個好主意。 – 2012-04-25 02:45:31