HashMap存儲元素采用的是hash表存儲數據,每存儲一個對象的時候,都會調用其hashCode()方法,算出其hash值,如果相同,則認為是相同的數據,直接不存儲,如果hash值不同,則再調用其equals方法進行比較,如果返回true,則認為是相同的對象,不存儲,如果返回false,則認為是不同的對象,可以存儲到HashMap集合中。
之所以key不能為基本數據類型,則是因為基本數據類型不能調用其hashcode()方法和equals()方法,進行比較,所以HashMap集合的key只能為引用數據類型,不能為基本數據類型,可以使用基本數據類型的包裝類,例如Integer Double等。
當然,在HashMap存儲自定義對象的時候,需要自己再自定義的對象中重寫其hashCode()方法和equals方法,才能保證其存儲不重復的元素,否則將存儲多個重復的對象,因為每new一次,其就創建一個對象,內存地址是不同的。