我有一个大小为10的ArrayList
l1
。我将l1
赋值给新的列表引用类型l2
。l1
和l2
会指向相同的ArrayList
对象吗?或者是分配给l2
的ArrayList
对象的副本
在使用l2
引用时,如果我更新list对象,它也会反映l1
引用类型中的更改。
例如:
List<Integer> l1 = new ArrayList<Integer>();
for (int i = 1; i <= 10; i++) {
l1.add(i);
}
List l2 = l1;
l2.clear();
除了创建2个列表对象,并对集合从旧到新进行复制之外,是否没有其他方法将列表对象的副本分配给新的引用变量?
发布于 2011-06-30 22:13:11
发布于 2011-06-30 22:15:54
是的,l1
和l2
将指向相同的引用,相同的对象。
如果要基于另一个ArrayList创建新的ArrayList,请执行以下操作:
List<String> l1 = new ArrayList<String>();
l1.add("Hello");
l1.add("World");
List<String> l2 = new ArrayList<String>(l1); //A new arrayList.
l2.add("Everybody");
结果是l1
将仍然有2个元素,而l2
将有3个元素。
发布于 2013-03-10 11:45:34
将源ArrayList中的值复制到目标数组列表的另一种便捷方法如下:
ArrayList<String> src = new ArrayList<String>();
src.add("test string1");
src.add("test string2");
ArrayList<String> dest= new ArrayList<String>();
dest.addAll(src);
这是实际的值复制,而不仅仅是引用的复制。
https://stackoverflow.com/questions/6536094
复制相似问题