惊虹上的小白 2015-03-28 16:31 采纳率: 71.4%
浏览 2206
已采纳

IdentityHashMap中 直接放入基本数据类型与 new Integer()的区别

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);的效果不一样

  • 写回答

1条回答 默认 最新

  • danielinbiti 2015-03-28 16:44
    关注

    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);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换