【发布时间】:2016-11-03 20:46:18
【问题描述】:
我真的不知道如何在不造成混乱的情况下提出这个问题,但我会尝试的。
在我的 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 中,从而为将来使用腾出空间。
【问题讨论】:
-
提示:开始阅读您正在使用的库调用的 javadocs。例如,大多数集合都有 addAll() 方法。在您的代码中,您将 LIST 作为 LIST 添加到另一个 LIST。然后你擦除你添加的列表,你的最终列表只包含一个 EMPTY 列表。
-
如果你这样做了怎么办:
aList1.add((ArrayList<String>) aList2.clone()); -
克隆功能+1。 ArrayList 实现 Cloneable docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html
-
我更喜欢
List1.add(new ArrayList<>(aList2));而不是克隆 -
@Kartic 那也不错????????