以自定義物件作為hashmap的key需要注意什麼

2021-08-14 04:26:12 字數 865 閱讀 3183

用自定義類作為key,必須重寫equals()和hashcode()方法。

自定義類中的equals() 和 hashcode()都繼承自object類。

object類的hashcode()方法返回這個物件儲存的記憶體位址的編號。

而equals()比較的是記憶體位址是否相等。

以下是沒有重寫equals()和hashcode()方法;

自定義  phonenumber類

package comjk;

public class phonenumber

public void setprefix(int prefix)

public int getphonenumber()

public void setphonenumber(int phonenumber) }

main 方法

public static void main(string args)

輸出結果

111222

null

在phonenumber 類中

重寫equals()和hashcode()方法;

@override

public boolean equals(object o)

if(!(o instanceof phonenumber))

phonenumber pn = (phonenumber)o;

return pn.prefix == prefix && pn.phonenumber == phonenumber;

}@override

public int hashcode()

輸出結果

111222

222

Java簡單實現自定義HashMap

陣列的特點是 定址容易,插入和刪除困難 而鍊錶的特點是 定址困難,插入和刪除容易。要綜合兩者的特性,就有了雜湊表。雜湊表有多種不同的實現方法,最經典的一種方法 拉鍊法。雜湊表可以理解為鍊錶的陣列。主幹為陣列,陣列的每乙個成員是鍊錶。該資料結構所容納的所有元素均包含乙個指標,用於元素間的鏈結。我們根據...

HashMap儲存自定義型別鍵值

練習 每位學生 姓名,年齡 都有自己的家庭住址。那麼,既然有對應關係,則將學生物件和家庭住址儲存到map集合中。學生作為鍵,家庭住址作為值。注意,學生姓名相同並且年齡相同視為同一名學生。1 學生類 publicclassstudent 2 測試類 publicclasshashmaptest 取出元...

HashMap儲存自定義型別資料

hashmap儲存自定義型別鍵值 map集合保證key是唯一的 作為key的元素,必須重寫hashcode方法和equals方法,以保證key唯一 hashmap儲存自定義型別鍵值 key person型別,person類必須重寫hashcode方法和equals方法,以保證key唯一 value ...