Java之IdentityHashMap实现原理
2017-03-04 本文已影响0人
dotaer_shashen
Java中key值可以重复的map
在正常的Map 实现(如 HashMap)中,当且仅当满足下列条件时才认为两个键 k1 和 k2 相等:(k1==null ? k2==null : e1.equals(e2));
而 IdentityHashMap 类利用哈希表实现 Map 接口,比较键(和值)时使用引用相等性(比较的是在内存中的储存地址)代替对象相等性;
IdentityHashMap<String,Object> map =newIdentityHashMap<String,Object>();
map.put(newString("xx"),"first");
map.put(newString("xx"),"second");
for (Entry<String, Object> entry : map.entrySet()) {
System.out.print(entry.getKey() +" ");
System.out.println(entry.getValue());
}
System.out.println("idenMap="+map.containsKey("xx"));
System.out.println("idenMap="+map.get("xx"));
xx first
xx second
idenMap=false
idenMap=null