Map tempMap = new HashMap();tempMap.put(1,2);
这样就报错。这是为什么?jdk版本的问题?

解决方案 »

  1.   

    map中的key和value要是对象,不能是基本数据类型。jdk1.5之后有自动拆装箱功能,基本数据类型作为键或值时候可以自动装箱成它们对应的包装类。比如int自动变成Integer,这是个1.5新特性。
      

  2.   

    JDK 5 以下的版本没有自动装箱功能,所以需要改成这样:tempMap.put(Integer.valueOf(1), Integer.valueOf(2));PS:自动装箱就是一个基本数据类型在需要 Object 参数的情况下会自动转换成为包装类型。
      

  3.   

    jdk1.5之后,Collection类库中的容器,都会自动装箱了,之前的版本的话,不能直接使用基本类型
      

  4.   

    自动包装器用起来 还得小心, 猜猜下面的代码会怎样:
    Integer i1 = null;
    Integer i2 = null;map.put(i1,i2);
      

  5.   

    这段代码怎么了..我这样测试.没任何问题呀?
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;public class Test
    {
        public static void main(String[] args)
        {
            Map<Integer, Integer> map = new HashMap<Integer, Integer>();
            Integer i1 = null;
            Integer i2 = null;        map.put(i1, i2);
            
            Iterator<Integer> it = map.keySet().iterator();
            while(it.hasNext()){
                System.out.println(map.get(it.next()));
            }
        }
    }
    输出结果为:null
      

  6.   

    for(Integer k : map.keySet()){
        System.out.println(k);
    }
    没有问题、输出 null
      

  7.   

    int 不是对象,new Integer(1)就可以