ArrayList的深拷贝与浅拷贝

1、深拷贝

通过以下代码进行理解

java 复制代码
import java.util.ArrayList;
import java.util.List;
 
public class Demo {
    public static void main(String[] args) {
        List<Integer> c = new ArrayList<>();
        c.add(1);
        c.add(2);
        c.add(3);
 
        List<Integer> c1 = new ArrayList<>(c);//深拷贝
        System.out.println(c);
        System.out.println(c1);
    }
}

输出结果为:(c和c1输出的结果相同)

2、浅拷贝

通过以下代码进行理解

java 复制代码
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
 
public class Demo {
    public static void main(String[] args) {
        List<Integer> c = new ArrayList<>();
        c.add(1);
        c.add(2);
        c.add(3);
        c.add(4);
        c.add(5);
 
        System.out.println(c);
        List<Integer> c1 = c.subList(2,5);
        System.out.println(c1);
        List<Integer> c2 = Collections.singletonList(c1.set(2, 99));
        System.out.println(c1);
        System.out.println(c);
 
    }
}

输出结果为:

submit进行的是浅拷贝,因此c的值也会进行改变

相关推荐
012925208 小时前
列表之链表_C
c语言·windows·链表
梦道长生8 小时前
GPT-SoVITS Windows 配置与推理笔记(自用)
人工智能·windows·笔记·gpt
末央&10 小时前
【C++】list底层封装和实现
c++·windows·list
啾啾Fun10 小时前
[Redis]redis-windows下载安装与使用
数据库·windows·redis
攻城狮7号11 小时前
【第39节】windows编程:打造MFC版本任务管理器
c++·windows·mfc·任务管理器
what_201811 小时前
Linux启动端口,Windows 看是否通
windows
电手12 小时前
Windows本地账户后门被关,微软强制使用在线账户
windows·microsoft·win11联网·win11跳过联网
匆匆z213 小时前
从 macos 切换到 windows 上安装的工具类软件
windows·macos·工具
明月醉窗台13 小时前
Qt 入门 0 之 QtCreator 简介
开发语言·c++·windows·qt
局外人_Jia14 小时前
【 C# 使用 MiniExcel 库的典型场景】
开发语言·windows·c#·miniexcel