抄自:
在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 糾結了一下...