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

相关推荐
idolao8 小时前
MySQL 5.7 安装教程:详细步骤+自定义安装+命令行客户端配置(Windows版)
数据库·windows·mysql
Dxy12393102169 小时前
Python 根据列表中某字段排序:从基础到进阶
开发语言·windows·python
IronMurphy12 小时前
Java 泛型深度解析:编译期类型擦除机制与 PECS 准则
java·windows·python
fy1216312 小时前
Redis 下载与安装 教程 windows版
数据库·windows·redis
IT小哥哥呀14 小时前
基于windows的个人/团队的时间管理工具
windows·c#·wpf·时间管理
ChaseDreamRunner15 小时前
如何用 NSSM 把 Jar 做成 Windows 服务
java·windows·jar
摇滚侠15 小时前
Windows 版 Nginx 关闭
运维·windows·nginx
love530love15 小时前
Windows 开源项目部署评估与决策清单(完整版)
人工智能·windows·python·开源·github
alphaTao15 小时前
LeetCode 每日一题 2026/3/23-2026/3/29
服务器·windows·leetcode
LINgZone216 小时前
Java Mock 测试框架 Mockito
java·windows·microsoft