首页  >  文章  >  Java  >  Java 的 ArrayList 赋值会创建副本还是共享引用?

Java 的 ArrayList 赋值会创建副本还是共享引用?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-19 06:52:02573浏览

Does Java's ArrayList Assignment Create a Copy or a Shared Reference?

在 Java 中复制 ArrayList 对象

在 Java 中,ArrayList 是动态数组,可用于存储指定类型的元素。使用 ArrayList 时,了解赋值的行为非常重要。

问题:共享引用还是复制?

假设我们有一个包含 10 个元素的 ArrayList l1 并将其分配给另一个变量 l2。 l1 和 l2 是指向同一个 ArrayList 对象,还是赋给 l2 的对象的副本?

答案:共享引用

Java 中的赋值只是复制变量的值,即在本例中是对 ArrayList 对象的引用。因此,l1 和 l2 将都引用同一个 ArrayList 对象。

例如:

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

List l2 = l1;
l2.clear();

在这种情况下,清除 l2 也会影响 l1,因为它们都指向同一个

创建副本

要创建 ArrayList 对象的副本,可以通过创建新的 ArrayList 并将原始列表中的元素添加到新列表来创建浅表副本:

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

此方法会生成一个单独的 ArrayList 对象,其元素与原始对象相同。

以上是Java 的 ArrayList 赋值会创建副本还是共享引用?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn