Java IdentityHashMap与HashMap的区别
IdentityHashMap与HashMap的区别
除了 IdentityHashMap中key可以重合,还有别的区别吗
Answers
-
两者最主要的区别是
IdentityHashMap使用的是==比较key的值,而HashMap使用的是equals() -
HashMap使用的是hashCode()查找位置,IdentityHashMap使用的是System.identityHashCode(object) -
IdentityHashMap理论上来说速度要比HashMap快一点 -
另外一点呢就是
IdentityHashMap中key能重复,但需要注意一点的是key比较的方法是==,所以若要存放两个相同的key,就需要存放不同的地址,下面用代码来说明:import java.util.HashMap; import java.util.IdentityHashMap; import java.util.Map; public class IdentityMapDemo { public static void main(String[] args) { Map identityMap = new IdentityHashMap(); identityMap.put("a", 1); identityMap.put(new String("a"), 2); identityMap.put("a", 3); System.out.println("Identity Map KeySet Size :: " + identityMap.keySet().size()); //输出结果为Identity Map KeySet Size :: 2 } }