首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >仅将ArrayList作为值传递,而不是引用

仅将ArrayList作为值传递,而不是引用
EN

Stack Overflow用户
提问于 2013-04-03 12:03:58
回答 7查看 59K关注 0票数 40

简单地说,我有一个带有ArrayList参数的方法。在该方法中,我修改了ArrayList的内容,以便仅与该方法返回的内容相关。因此,我不希望作为参数传递的ArrayList受到任何影响(即不作为引用传递)。

我试过的所有东西都没能达到预期的效果。我需要做些什么才能只在方法中使用ArrayList的副本,而不让它更改实际的变量?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-04-03 12:07:00

即使您有办法将数组列表作为副本传递,而不是通过引用传递,它也只是一个浅层副本。

我会这样做:

代码语言:javascript
复制
void foo(final ArrayList list) {

    ArrayList listCopy = new ArrayList(list);
    // Rest of the code

}

只需处理复制的列表即可。

票数 51
EN

Stack Overflow用户

发布于 2013-04-03 12:09:50

您可以使用ArrayList的复制构造函数创建ArrayList的副本:

代码语言:javascript
复制
ArrayList copy = new ArrayList(original);

但是,如果列表的元素也是对象,那么您必须意识到,修改副本的成员也会修改原始的成员。

票数 21
EN

Stack Overflow用户

发布于 2013-04-03 12:06:31

您可以使用.clone方法或CopyOnWriteArrayList来制作副本,从而不会影响原始文件。

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

https://stackoverflow.com/questions/15778645

复制
相关文章

相似问题

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