import java.util.*;
public class Test{
public static void main(String[] args) {
// TODO Auto-generated method stub
IdentityHashMap<Integer, String> map =new IdentityHashMap<Integer, String>();
String s1 =new String("test");
map.put(new Integer(4), s1);
map.put(new Integer(4), s1);
System.out.println(map.size());
map.put(4, s1);
map.put(4, s1);
System.out.println(map.size());
for(String s : map.values()){
System.out.println(s);
}
}
}
基本數據類型放入集合中java自動集裝箱不是應該會創建相應的外部包裝器嗎?為什麼map.put(new Integer(4), s1); 與 map.put(4, s1);的效果不一樣
map.put(4, s1);//這兩裝箱後用的是Integercache中的,是同一個對象,integer會初始化-128-127到integercache中,這些整型裝箱時都是一個對象
map.put(4, s1);
map.put(new Integer(4), s1);//new出來的,是兩個不同的對象
map.put(new Integer(4), s1);
你可以改成map.put(129, s1);