将ArrayLists插入ArrayLists

时间:2016-07-01 12:24:15

标签: java arraylist

我真的不知道如何在不引起混淆的情况下问这个问题,但我会尝试。

在我的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中,从而为将来的使用留出空间。

3 个答案:

答案 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中的所有元素,因为aList2aList1末尾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);
}