【发布时间】:2016-06-04 19:03:26
【问题描述】:
我正在尝试将对象(在此示例中以使其保持简单的字符串)添加到 Arraylist,这些对象作为 Arraylist 收集。代码如下:
public static void main(String[] args) {
ArrayList dummylist = new ArrayList();
ArrayList<ArrayList<String>> dummylistlist = new ArrayList<ArrayList<String>>();
for (int j=0; j< 2; j++){
dummylistlist.add(dummylist);
String text = "test";
dummylistlist.get(j).add(text);
}
for (int j=0; j< 2; j++){
System.out.println("arraylist "+j+" has size "+dummylistlist.get(j).size());
System.out.println("Arraylist No."+j+" is ="+dummylistlist.get(j));
}
}
输出是:
arraylist 0 has size 2
Arraylist No.0 is =[test, test]
arraylist 1 has size 2
Arraylist No.1 is =[test, test]
但我希望它是:
arraylist 0 has size 1
Arraylist No.0 is =[test]
arraylist 1 has size 1
Arraylist No.1 is =[test]
为什么方法 add(text) 将“test”字符串附加到所有子列表中,以便在每个循环中添加一次?我不明白。你能帮我修复我的代码以实现后者的输出吗?提前谢谢你。
【问题讨论】:
-
不要打电话给
dummylistlist.add(dummylist);因为这个,你只有一个列表,叫dummylist。 -
您在“listlist”中添加了两次相同的列表,因此,在
dummylist中添加了两次“test”。