【发布时间】:2015-05-30 23:00:46
【问题描述】:
有目标结果: [[a],[a,b],[a,b,c]]
但是当我运行我的代码时,结果是: [[a,b,c],[a,b,c],[a,b,c]]
这是源代码:
public class Try {
ArrayList<String> al=new ArrayList<String>();
List<List<String>> hm=new ArrayList<List<String>>();
public void addal2(){
for(int j=0; j<3;j++){
al.clear();
for(int i=0; i<1;i++){
if(j==0){al.add("a");}
else if(j==1){al.add("a");al.add("b");}
else if(j==2){al.add("a");al.add("b");al.add("c");}
}
hm.add(al);
}
System.out.println("hm final"+hm);
}
public static void main(String[] args) {
// TODO code application logic here
Try c = new Try();
c.addal2();
}
}
请告诉我为什么结果是这样的 HM 只是添加了最后一个元素?
【问题讨论】:
-
请在您的问题中更具体一些,stackOverflow 并不是用来发布半途而废的家庭作业并让我们修复它的地方。
-
您添加了 3 次相同的列表并更改了其内容。不要在循环开始时清除它,而是创建一个新列表。
-
@khelwood 我想我可以在 j 的每个循环中获取每个 Arraylist al 并一次添加到 List hm,谢谢
标签: java for-loop arraylist duplicates element