我正在嘗試爲自定義對象的散列表編寫get方法。HashMap家庭作業,模板問題
public V get(K key){
int hashval = (int)(Math.abs(key.hashCode()) % this.capacity);
for(Data<K, V> d : hashmap.get(hashval)){
System.out.println("hashval: " + hashval);
System.out.println("d.getKey:" + d.getKey() + " class: " + d.getKey().getClass());
System.out.println("key:" + key + " class: " + key.getClass());
if (d.getKey() == key){
System.out.println("d.getValue: " + d.getValue());
return d.getValue();
}
}
我希望,如果d.getKey()和密鑰打印相同的值和相同類型的類,然後if語句應該出來真,打印應返回的值。但是,這是我得到的結果:
hashval: 5
d.getKey:12345 class: class java.lang.Integer
key:12345 class: class java.lang.Integer
if語句內部的行未顯示。我忽略了什麼愚蠢的問題?我認爲它可能與模板有關,因爲key是泛型類型K?
正確的術語是Java中的泛型。 –
另外,這是一個應用於引用類型的'=='運算符的問題。 –
它不一定只適用於'Integer',但你會明白。 –