Java中的hashMap是不允许有重复的key存在的,那么什么才是重复的呢?其实就是说什么才是相等的?
Hashmap中用equal来判断相等。
IdentityHashMap中用==来判断相等。
例子:
public class IdentityHashMapTst {
public static void main(String[] args) {
Map<Integer,String> map1 = new HashMap<Integer,String>();
Map<Integer,String> map2 = new IdentityHashMap<Integer,String>();
Integer i1, i2;
i1 = 1;
i2 = 1;
System.out.println("== \t"+ (i1==i2));
System.out.println("equals \t"+ (i1.equals(i2)));
map1.put(i1, "22"); map1.put(i2, "22");
map2.put(i1, "22"); map2.put(i2, "22");
System.out.println(map1.keySet().size());
System.out.println(map2.keySet().size());
i1 = 555;
i2 = 555;
System.out.println("== \t"+ (i1==i2));
System.out.println("equals \t"+ (i1.equals(i2)));
map1.put(i1, "22"); map1.put(i2, "22");
map2.put(i1, "22"); map2.put(i2, "22");
System.out.println(map1.keySet().size());
System.out.println(map2.keySet().size());
}
}
运行结果:
写道
== true
equals true
1
1
== false
equals true
2
3
equals true
1
1
== false
equals true
2
3