站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题路过的帮看看简单的集合问题,谢了

路过的帮看看简单的集合问题,谢了

摘要: 路过的帮看看简单的集合问题,谢了


基本思路:将字符数组的值赋给Arraylist,然后存到Hashtable里,接着将该Arraylist清空,再赋予另一个字符数组的值,再存到同一个Hashtable中。但是最后从Hashtable取出来的两条List却是一样的数据。请各位帮看看代码的问题。谢谢了,新手

List testlist=new ArrayList();
Hashtable numbers = new Hashtable();
String[] str={-#34;0-#34;,-#34;1-#34;,-#34;2-#34;,-#34;3-#34;};
String[] str2={-#34;4-#34;,-#34;5-#34;,-#34;6-#34;,-#34;7-#34;};
for(int k=0;k-#60;str2.length;k++){
testlist.add(k,str2[k]);
}
numbers.put(-#34;1-#34;,testlist);
testlist.clear();
for(int k=0;k-#60;str.length;k++){
testlist.add(k,str[k]);
}
numbers.put(-#34;2-#34;,testlist);
List out=(ArrayList)numbers.get(-#34;1-#34;);
List out1=(ArrayList)numbers.get(-#34;2-#34;);


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

//2
List testlist=new ArrayList();
Hashtable numbers = new Hashtable();
String[] str={-#34;0-#34;,-#34;1-#34;,-#34;2-#34;,-#34;3-#34;};
String[] str2={-#34;4-#34;,-#34;5-#34;,-#34;6-#34;,-#34;7-#34;};
for(int k=0;k-#60;str2.length;k++){
testlist.add(k,str2[k]);
}
numbers.put(-#34;1-#34;,testlist);
///testlist.clear();
testlist = new ArrayList();
for(int k=0;k-#60;str.length;k++){
testlist.add(k,str[k]);
}
numbers.put(-#34;2-#34;,testlist);
List out=(ArrayList)numbers.get(-#34;1-#34;);
List out1=(ArrayList)numbers.get(-#34;2-#34;);



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


mark!


↑返回目录
前一篇: +操作符的问题----小小疑问~
后一篇: 小程序,根据用户输入给出不同的输出