我真的不知道如何在不引起混淆的情况下问这个问题,但我会尝试。
在我的Swing应用程序中,我想将ArrayList
添加到ArrayList
,然后clear();
添加第二个ArrayList,而不会丢失所有数据。
以下是一个例子:
ArrayList<ArrayList<String>> aList1 = new ArrayList<>();
ArrayList<String> aList2 = new ArrayList<>();
aList2.add("Object 1");
aList2.add("Object 2");
aList1.add(aList2);
aList2.clear();
System.out.println(aList1);
然后所有数据都丢失了,aList1为空。我认为这是因为我将ArrayList
添加为ArrayList
而不是值。是否可以在从aList2
删除数据时将数据保存在aList1中,从而为将来的使用留出空间。
答案 0 :(得分:0)
以下是您的代码的逐步说明:
// Define a list of lists named aList1
ArrayList<ArrayList<String>> aList1 = new ArrayList<>();
// Define a list named aList2
ArrayList<String> aList2 = new ArrayList<>();
// Add an element to aList2
aList2.add("Object 1");
// Add an element to aList2
aList2.add("Object 2");
// Add aList2 to aList1
aList1.add(aList2);
// Empty aList2
aList2.clear();
// Print aList1. Now aList1 is not empty. Is a list containing just
// one list of size 0.
System.out.println(aList1);
如逐步所示。在流程结束时, aList1
不为空。
它只包含一个空列表。
清除aList2
删除aList2
中的所有元素,因为aList2
与aList1
末尾aList1.get(0)
的位置0中的相同列表存在,并且是空列表也由aList2
指出。
答案 1 :(得分:0)
只需从要添加的ArrayList创建新的ArrayList。
这是
ArrayList<ArrayList<String>> aList1 = new ArrayList<>();
ArrayList<String> aList2 = new ArrayList<>();
aList2.add("Object 1");
aList2.add("Object 2");
aList1.add(new ArrayList(aList2));
aList2.clear();
System.out.println(aList1);
答案 2 :(得分:0)
考虑使用列表进行复制作为备份清单。
public static void main(String[] args) {
final List<List<String>> aList1 = new ArrayList<List<String>>();
final List<String> aList2 = new ArrayList<String>();
final List<String> aList3 = new ArrayList<String>();
aList2.add("Object 1");
aList2.add("Object 2");
aList3.addAll(aList2);
aList1.add(aList2);
aList1.add(aList3);
aList2.clear();
System.out.println(aList1);
}