简单说IdentityHashMap与经常使用的HashMap的区别是:前者比较key时是“引用相等”然后者是“对象相等”,即对于k1和k2,当k1==k2时,IdentityHashMap认为两个key相等,而HashMap只有在k1.equals(k2) == true 时才会认为两个key相等。jvm
IdentityHashMap有其特殊用途,好比序列化或者深度复制。或者记录对象代理。spa
举个例子,jvm中的全部对象都是独一无二的,哪怕两个对象是同一个class的对象,并且两个对象的数据彻底相同,对于jvm来讲,他们也是彻底不一样的,若是要用一个map来记录这样jvm中的对象,你就须要用IdentityHashMap,而不能使用其余Map实现。代理