首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java ArrayList拷贝

Java ArrayList拷贝
EN

Stack Overflow用户
提问于 2011-06-30 22:10:01
回答 5查看 415.8K关注 0票数 247

我有一个大小为10的ArrayList l1。我将l1赋值给新的列表引用类型l2l1l2会指向相同的ArrayList对象吗?或者是分配给l2ArrayList对象的副本

在使用l2引用时,如果我更新list对象,它也会反映l1引用类型中的更改。

例如:

代码语言:javascript
复制
List<Integer> l1 = new ArrayList<Integer>();
for (int i = 1; i <= 10; i++) {
    l1.add(i);
}

List l2 = l1;
l2.clear();

除了创建2个列表对象,并对集合从旧到新进行复制之外,是否没有其他方法将列表对象的副本分配给新的引用变量?

EN

回答 5

Stack Overflow用户

发布于 2011-06-30 22:13:11

票数 74
EN

Stack Overflow用户

发布于 2011-06-30 22:15:54

是的,l1l2将指向相同的引用,相同的对象。

如果要基于另一个ArrayList创建新的ArrayList,请执行以下操作:

代码语言:javascript
复制
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个元素。

票数 37
EN

Stack Overflow用户

发布于 2013-03-10 11:45:34

将源ArrayList中的值复制到目标数组列表的另一种便捷方法如下:

代码语言:javascript
复制
ArrayList<String> src = new ArrayList<String>();
src.add("test string1");
src.add("test string2");
ArrayList<String> dest= new ArrayList<String>();
dest.addAll(src);

这是实际的值复制,而不仅仅是引用的复制。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6536094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档