我使用的處理語言(從Java PApplet派生)3.01版HashMap不能使用用戶定義鍵類工作
這裏是我的代碼...
Pig a = new Pig(1);
Pig b = new Pig(1);
HashMap<Pig, String> m = new HashMap<Pig, String>();
m.put(a,"foo");
String c = m.get(b);
println(c);
class Pig {
int a;
Pig(int x) { a=x;}
boolean equals(Pig b) { return b.a==a;}
int hashCode() { return a;}
}
正如你看到的我是使用Pig作爲key,我定義了equals和hashCode。我期望輸出「foo」,但是,我得到的輸出爲空。
任何想法這裏發生了什麼?爲什麼這不起作用?
您還沒有添加'B'到HashMap中。因此,即使HashMap中有另一個對象,'equals'方法返回true,您也無法檢索它。 – hotzst
您沒有覆蓋等於。 –
@hotzst:這正是他想要做的,得到「foo」沒有加b,因爲a和b應該被認爲是等於。 –