IdentityHashMap&HashMap

簡單說IdentityHashMap與經常使用的HashMap的區別是:前者比較key時是「引用相等」然後者是「對象相等」,即對於k1k2,當k1==k2時,IdentityHashMap認爲兩個key相等,而HashMap只有在k1.equals(k2) == true 時纔會認爲兩個key相等。jvm

 

IdentityHashMap有其特殊用途,好比序列化或者深度複製。或者記錄對象代理。spa

 

舉個例子,jvm中的全部對象都是獨一無二的,哪怕兩個對象是同一個class的對象,並且兩個對象的數據徹底相同,對於jvm來講,他們也是徹底不一樣的,若是要用一個map來記錄這樣jvm中的對象,你就須要用IdentityHashMap,而不能使用其餘Map實現。代理

本站公眾號
   歡迎關注本站公眾號,獲取更多信息