本帖最后由 whitefox36 于 2014-03-06 22:29:12 编辑

解决方案 »

  1.   

    把map的实例化放到while循环里面去,你放在外面,只指定了一个地址,所以后面put的时候把前面的覆盖了,所以你看到的都是最新的值。放到循环里面,你懂的。。
    while (rs.next()) {
      map = new HashMap();

    }
      

  2.   

    第一次循环的时候把map1放到了list中,假设map1指向的内存地址位mem1
    第二次循环的适合还是使用map变量,还是指向的mem1,但重新赋值了,所以把新的值map2放到了内存,因为list里面是传引用的,所以之前的map1的内存也变成了新的值。