Java - 包含对原始List的引用的克隆列表

May*_*ron 2 java clone copy list

我不确切知道如何复制Java中的List.我有这个代码:

List<String> copy = new ArrayList<String>(original);
Run Code Online (Sandbox Code Playgroud)

这是否会创建一个名为copy的新List,它只保存对原始列表中对象的引用?(这就是我要的).或者它会创建新的字符串对象并消耗不必要的内存?

当我从副本列表中删除项目时,这只会删除一个引用而不是从两个列表中删除该对象吗?

谢谢阅读!

rge*_*man 6

copy列表将包含对相同String对象的引用.这被称为浅拷贝.它不会创建元素的副本; 它将创建对元素的引用的副本.

original -->  [ +      +       +  ]
                |      |       |
                v      v       v
               "one"  "two" "three"
                ^      ^       ^
                |      |       |
    copy -->  [ +      +       +  ]
Run Code Online (Sandbox Code Playgroud)

从一个列表中删除项目时,仅从该列表中删除该引用.其他列表中的相应参考仍然完好无损.

original -->  [ +      +       +  ]
                |      |       |
                v      v       v
               "one"  "two" "three"
                ^      ^
                |      |
    copy -->  [ +      +  ]
Run Code Online (Sandbox Code Playgroud)