本帖最后由 k745933923 于 2011-05-11 17:58:45 编辑

解决方案 »

  1.   

    for循环第一句加上map.clear(),put方法貌似不能直接修改map的属性值
      

  2.   

    还是不行。
    HashMap<String, String> map1 = new HashMap<String, String>();
    for (int i = 0; i < 2; i++)
    {
    map1.clear();
    map1.put("paper_name", MyContentHandler.hisname[i]);
    map1.put("paper_id", MyContentHandler.id[i]);
    list.add(map1);
    System.out.println(i);
    System.out.println(map1);
    System.out.println("List"+i+":"+list.get(i)); }
    System.out.println("为啥就这样了呢"+list.get(0));
    System.out.println("为啥就这样了呢"+list.get(1));
    加粗的那边是真确的,两次输出是不一样的,但是循环外面就搞笑了。
      

  3.   

    map的值放错了,他永远保存的是循环第二次时候的值,第一次的值让第二次循环覆盖了
      

  4.   


    但是覆盖前已经加到list里面了啊..我觉得应该不是这个问题
      

  5.   

    我debug了一下,发现map值变化的时候list里面存放的原来的map也跟着改变了,估计是因为add的是引用,所以map变list也跟着变,解决方法,每次循环new一个map。
      

  6.   


    哦.对, list怎么放都是放的那一个对象.. 第二次改了map值改了后,list里面的那两个map对象其实都是同一个引用对吧(不晓得我表述得对不对?)? 我觉得楼主可以试试吧HashMap<String, String> map = new HashMap<String, String>();放到循环里面