基本思路:将字符数组的值赋给Arraylist,然后存到Hashtable里,接着将该Arraylist清空,再赋予另一个字符数组的值,再存到同一个Hashtable中。但是最后从Hashtable取出来的两条List却是一样的数据。请各位帮看看代码的问题。谢谢了,新手List testlist=new ArrayList();
Hashtable numbers = new Hashtable();
String[] str={"0","1","2","3"};
String[] str2={"4","5","6","7"};
for(int k=0;k<str2.length;k++){
    testlist.add(k,str2[k]);
}
numbers.put("1",testlist);
testlist.clear();
for(int k=0;k<str.length;k++){
    testlist.add(k,str[k]);
}
numbers.put("2",testlist);
List out=(ArrayList)numbers.get("1");
List out1=(ArrayList)numbers.get("2");

解决方案 »

  1.   

    虽然testlist1 put到了hashtable里,但是改变量还是指向原来那个地址。
    所以2种改法:
    //1
    List testlist1=new ArrayList();
    List testlist2=new ArrayList();
    Hashtable numbers = new Hashtable();
    String[] str={"0","1","2","3"};
    String[] str2={"4","5","6","7"};
    for(int k=0;k<str2.length;k++){
        testlist1.add(k,str2[k]);
    }
    numbers.put("1",testlist1);
    ///testlist.clear();
    for(int k=0;k<str.length;k++){
        testlist2.add(k,str[k]);
    }
    numbers.put("2",testlist2);
    List out=(ArrayList)numbers.get("1");
    List out1=(ArrayList)numbers.get("2");//2
    List testlist=new ArrayList();
    Hashtable numbers = new Hashtable();
    String[] str={"0","1","2","3"};
    String[] str2={"4","5","6","7"};
    for(int k=0;k<str2.length;k++){
        testlist.add(k,str2[k]);
    }
    numbers.put("1",testlist);
    ///testlist.clear();
    testlist = new ArrayList();
    for(int k=0;k<str.length;k++){
        testlist.add(k,str[k]);
    }
    numbers.put("2",testlist);
    List out=(ArrayList)numbers.get("1");
    List out1=(ArrayList)numbers.get("2");
      

  2.   

    不要用一个ArrayList,每个数组用一个ArrayList!!!!