【发布时间】:2016-07-11 21:39:18
【问题描述】:
我有一个 ArrayList (alal) 和一个 ArrayList(al) 的 ArrayList。我想将 al 插入 alal,但我希望 alal.get(0) 包含 al 的所有内容以及添加的元素 100。我认为最简单的方法是先做
alal.add(al);
然后访问它的第 0 个元素,并添加一个 100,比如
alal.get(0).add(100);
但是,这样做的问题是 al 的内容也会发生变化,因为它是一个对象,因此 alal 持有它的引用而不是值。
我在下面尝试过。请告诉我这是否是正确的做法,或提出改进建议。
import java.util.ArrayList;
public class additionalal {
public static void main(String[] args) {
ArrayList<ArrayList<Integer>> alal = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> al = new ArrayList<Integer>();
al.add(1);al.add(2);al.add(3);
//WRONG
// alal.add(al);
// alal.get(0).add(100);
//CORRECT
ArrayList<Integer> alextra = new ArrayList<Integer>();
alextra.addAll(al);
alextra.add(100);
alal.add(alextra);
System.out.println(alal);
System.out.println(al);
}
}
【问题讨论】:
-
有什么问题?
-
如果您希望 alal.get(0) 返回列表 al 的内容,那么您应该将 al(实际上是它的副本)插入到元素 0 中:
alal.add(0, al)
标签: java arraylist pass-by-reference