在hashmap中,為什麼不能使用基本資料型別作為key?
其實和hashmap底層的儲存原理有關,hashmap儲存資料的特點是:無序、無索引、不能儲存重複元素。
儲存元素採用的是hash表儲存資料,每儲存乙個物件的時候,都會呼叫其hashcode()方法,算出其hash值,如果相同,則認為是相同的資料,直接不儲存,如果hash值不同,則再呼叫其equals方法進行比較,如果返回true,則認為是相同的物件,不儲存,如果返回false,則認為是不同的物件,可以儲存到hashmap集合中。
之所以key不能為基本資料型別,則是因為基本資料型別不能呼叫其hashcode()方法和equals()方法,進行比較,所以hashmap集合的key只能為引用資料型別,不能為基本資料型別,可以使用基本資料型別的包裝類,例如integer double等。
當然,在hashmap儲存自定義物件的時候,需要自己再自定義的物件中重寫其hashcode()方法和equals方法,才能保證其儲存不重複的元素,否則將儲存多個重複的物件,因為每new一次,其就建立乙個物件,記憶體位址是不同的。
注:預設的物件的hashcodo值就是記憶體位址,equals方法比較的也是 ==, 比較的是記憶體位址
重寫後的hashcode方法就是物件的屬性的位址,equals方法是比較物件的屬性的位址
另:hashmap中key是可以為null, 只能儲存乙個null, 因為計算key的hash值的時候,如果key為null, 則其hash值為0
原文:
HashMap儲存原理
hashmap儲存的資料存放在記憶體中,提高hashmap資料定址速度是重點要解決的問題,所以hashmap底層的儲存結構非常關鍵,如果使用陣列儲存,時間複雜度為 1 使用鍊錶儲存,時間複雜度為o n 如果使用二叉樹儲存,時間複雜度為o lg n 所以hashmap優先使用陣列儲存,如果出現hash...
查詢資料庫資料使用HashMap儲存
public list findsousuosearch string search cursor.close return list 但是查詢的時候獲取的就是最後一條新增的資料 我不知道錯在了 然後我又從網上查了一下 設定map初始化的時候我放在了最外面 然後我是這樣設定的 public list...
HashMap儲存自定義型別資料
hashmap儲存自定義型別鍵值 map集合保證key是唯一的 作為key的元素,必須重寫hashcode方法和equals方法,以保證key唯一 hashmap儲存自定義型別鍵值 key person型別,person類必須重寫hashcode方法和equals方法,以保證key唯一 value ...