是的 list中存放的都是指向同一个map就想你说的必须在循环内new一个新的map再add

解决方案 »

  1.   

    不是,map中的key,不允许重名的。
      

  2.   

    你往list里面放的都是同一个map,key都是“key1”,第一个0被后面的1覆盖掉了
      

  3.   


    是覆盖了,但是我在覆盖之前已经add到list里了。说明list是存放指向map的引用的。 
      

  4.   

    1、list中存放的是map的引用
    2、第一次添加map的值为("key1","0"),第二次添加("key1","1"),由于key相同覆盖了"0"为"1",所以map最后的值为("key1","1"),list最后为[("key1","1"),("key1","1")]
      

  5.   

    您好:
      您纠结的问题是为何list里是[{key1=1}, {key1=1}]
      首先,Map接口里的key值是不允许重复的;其次,list中允许对象重复。再次,for循环了2次
    下边把for循环拆分开来详细看。
    List<Map<String,String>> list = new ArrayList<Map<String,String>>();
        Map<String,String> m =new HashMap<String,String>();m.put("k",String.valueOf(0));
        list.add(m);
        System.out.println(list.toString()+"-----"+list.size()); 
        System.out.println( m.get("k")); 
        /////============================================
        m.put("k",String.valueOf(1));
            list.add(m);
            System.out.println(list.toString()+"-----"+list.size());  
        System.out.println( m.get("k")); 
       结果[{k=0}]-----1
    0
    [{k=1}, {k=1}]-----2
    1
      

  6.   

    Java的引用型变量实质是一个指针(官方的资料上叫“引用”,但总觉得太拗口)。LZ实质上是在List里添加了两个引用型变量(指针),它们指向的是同一个实例。
      

  7.   

    List<Map<String,String>> list = new ArrayList<Map<String,String>>();
    Map<String,String> m;
    for(int i =0;i<2;i++){
       m =new HashMap<String,String>();
       m.put("key1", String.valueOf(i));          
       list.add(m);   
    }
      

  8.   

    List<Map<String,String>> list = new ArrayList<Map<String,String>>();
            Map<String,String> m =new HashMap<String,String>();
            for(int i =0;i<2;i++){
              m.put("key"+i, String.valueOf(i));          
                 
            }

            list.add(m);
      

  9.   


    List<Map<String,String>> list = new ArrayList<Map<String,String>>();
    for(int i =0;i<2;i++){
       Map<String,String> m =new HashMap<String,String>();
       m.put("key1", String.valueOf(i));          
       list.add(m);   
    }
      

  10.   

    11楼你这样没有满足楼主的要求,得到的是
    [{key0=0, key1=1}]
    应该按照10楼和12楼的做法得到
    [{key1=0}, {key1=1}]
      

  11.   

    map接口里的key值不允许重复,
      

  12.   

    如果你只希望用List存一对对key和value的话,不需要用map的。
    用AbstractMap.SimpleEntry就好了。
    List都只存长度为1的map有点浪费,遍历也不方便吧。
    Map.Entry<String, String> entry = new AbstractMap.SimpleEntry <String, String>("key1", "value1");
      

  13.   

    请问LZ问题解决了吗?是怎么解决的啊?是覆盖了,但是我在覆盖之前已经add到list里了。说明list是存放指向map的引用的。