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的值也会进行改变

相关推荐
请为小H留灯36 分钟前
Windows 系统启用 Telnet 客户端:图文详细教程
网络·windows·测试·telnet
信鸽爱好者3 小时前
Windows +VM虚拟机安装github服务器
服务器·windows·ubuntu·机器人·github
分号5 小时前
你在运行该虚拟机时启用了侧通道缓解
windows
鹿角片ljp6 小时前
深入理解Java集合框架:核心接口与实现解析
java·开发语言·windows
葱段7 小时前
Windows 安装 Chocolatey 包管理器
windows
张火火isgudi8 小时前
VMware Debian 挂载 Windows 文件夹至 Debian 目录
linux·运维·windows·debian
小尧嵌入式8 小时前
C++选择排序插入排序希尔排序快排归并排及大小根堆实现优先级队列
数据结构·c++·windows·算法·排序算法
浪扼飞舟9 小时前
常见WPF用户控件操作(集合、动态生成、位运算、依赖属性)
windows
Lupino18 小时前
实战记录:使用 Haskell.nix 交叉编译 Haskell 项目至 Windows
windows·haskell
zzcufo20 小时前
使用multimonitortool工具实现多屏显示器的映射
windows·计算机外设