我想創建一個具有某個類作爲鍵的映射。我碰到的問題是,因爲這個類包含指針,所以如果我使用HashMap(參見下面的代碼),則在散列時使用此地址。我怎樣才能得到它來比較實際值而不是地址,還是有一些其他的容器可以用來實現相同的結果?以對象作爲鍵的映射
import java.util.*;
public class Main {
public static void main(String args[]) {
class Foo {
public Foo(String a) {s = a;}
public String s;
}
HashMap<Foo,Integer> a = new HashMap<Foo,Integer>();
a.put(new Foo("test"), 1);
System.out.println(a.get(new Foo("test")));
}
}
此輸出null
您的問題標題不正確。你正在使用對象作爲鍵,而不是類。如果你使用類作爲鍵,那看起來像這樣:'HashMap a;'另外,dasblinkenlight是正確的。您需要在要用於映射鍵的對象的類中定義equals和hashcode。 –
Bill
謝謝,改了標題。 – howardh