hashmap存儲數據


在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
原文:https://blog.csdn.net/weixin_42054155/article/details/80715750


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM