區別與其他的鍵不能重復的容器,IdentityHashMap允許key值重復,但是——key必須是兩個不同的對象,即對於k1和k2,當k1==k2時,IdentityHashMap認為兩個key相等,而HashMap只有在k1.equals(k2) == true 時才會認為兩個key相等。
看一段代碼:
public static void main(String[] args) {
// TODO Auto-generated method stub
Map<String,String> map =new IdentityHashMap<String,String>(100);//初始化容器的大小
String a="aa";
String b=new String("aa");
System.out.println(a==b);
map.put(a, "cc");
map.put(b, "bb");
map.put("2", "dd");
System.out.println(map.size());//3
Map<String,String> map1 =new IdentityHashMap<String,String>(100);
map1.put("11", "cc");
map1.put(new String("11"), "bb"); //map1.put(new String("11").intern(), "bb");
map1.put("2", "dd");
System.out.println(map1.size());//3
Map<Integer,String> map2 =new IdentityHashMap<Integer,String>(100);
map2.put(127, "cc");
map2.put(127, "bb");
map2.put(2, "dd");
System.out.println(map2.size());//2
//超出常量池范圍~~
Map<Integer,String> map3 =new IdentityHashMap<Integer,String>(100);
map3.put(128, "cc");
map3.put(128, "bb");
map3.put(2, "dd");
System.out.println(map3.size()); //3
}