HashMap不能使用基本資料型別作為key

2022-06-13 22:57:15 字數 536 閱讀 1316

抄自:

在hashmap中,為什麼不能使用基本資料型別作為key?

其實和hashmap底層的儲存原理有關,hashmap儲存資料的特點是:無序、無索引、不能儲存重複元素。

儲存元素採用的是hash表儲存資料,每儲存乙個物件的時候,都會呼叫其hashcode()方法,算出其hash值,如果相同,則認為是相同的資料,直接不儲存,如果hash值不同,則再呼叫其equals方法進行比較,如果返回true,則認為是相同的物件,不儲存,如果返回false,則認為是不同的物件,可以儲存到hashmap集合中。

之所以key不能為基本資料型別,則是因為基本資料型別不能呼叫其hashcode()方法和equals()方法,進行比較,所以hashmap集合的key只能為引用資料型別,不能為基本資料型別,可以使用基本資料型別的包裝類,例如integer double等。

當然,在hashmap儲存自定義物件的時候,需要自己再自定義的物件中重寫其hashcode()方法和equals方法,才能保證其儲存不重複的元素,否則將儲存多個重複的物件,因為每new一次,其就建立乙個物件,記憶體位址是不同的。

HashMap不能使用基本資料型別作為key

hashmap儲存元素採用的是hash表儲存資料,每儲存乙個物件的時候,都會呼叫其hashcode 方法,算出其hash值,如果相同,則認為是相同的資料,直接不儲存,如果hash值不同,則再呼叫其equals方法進行比較,如果返回true,則認為是相同的物件,不儲存,如果返回false,則認為是不同...

pdfcrop不能使用

最近,用到了pdfcrop,用來去除pdf中空白的邊。但是使用pdfcrop margins 0 pdf 後,給出了錯誤 error pdfcrop cannot call ghostscript 但是我已經安裝了ctex,裡面已經包含ghostscript,所以就不知道什麼錯誤。在網上針對這個問題...

CGRect CGFloat 不能使用

筆者還在照著別人 敲東西的階段 汗顏哪 言歸正傳,今天敲 的時候發現只要是繼承nsobject的類 都不能使用cgrect cgfloat 會報 unknown type name cgrect did you mean rect or unknown type name cgfloat 糾結了一下...