Java ArrayList 副本

标签 java arraylist

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

当使用 l2 引用时,如果我更新列表对象,它也会反射(reflect) l1 引用类型的变化。

例如:

List<Integer> l1 = new ArrayList<Integer>();
for (int i = 1; i <= 10; i++) {
    l1.add(i);
}

List l2 = l1;
l2.clear();

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

最佳答案

是的,赋值只会将 l1value(这是一个引用)复制到 l2。它们都将引用同一个对象。

创建一个浅拷贝非常简单:

List<Integer> newList = new ArrayList<>(oldList);

(仅作为一个例子。)

关于Java ArrayList 副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6536094/

相关文章:

java - 使用 Java string.format() 进行打印

java - 使用 ProcessBuilder 通过 Java 运行 perl 脚本

java - 在 Hibernate 搜索中使用 Lucene 过滤器

java - 无法将 Spring MVC 依赖项添加到 Maven 项目

java - Intent.putExtra 传递空值

android - 遍历嵌套的 json 数组是将先前分配的值添加到数据模型

java - 在数组列表中将我选择的名称设置为非 Activity boolean 值,然后将它们存储在另一个数组中?

java - 正确的方法,在Java中连续查询Modbus(JAMOD)

java - 我想要一个包含 100 名具有属性的学生的列表。我怎样才能在java中拥有这样一个列表而不使用add.list() 100次?

java - java中的ArrayList不删除-1