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

相关推荐
NoSi EFUL10 小时前
redis存取list集合
windows·redis·list
coNh OOSI13 小时前
Redis——Windows安装
数据库·windows·redis
iNgs IMAC13 小时前
如何在Windows系统上安装和配置Node.js及Node版本管理器(nvm)
windows·node.js
无巧不成书021816 小时前
Rust开发环境完全指南:Windows/Linux双平台配置与实战
linux·windows·rust·gnu·msvc·mingw-w64安装·镜像配置
xiaoshuaishuai816 小时前
C# ZLibrary数字资源分发
开发语言·windows·c#
私人珍藏库17 小时前
[Windows] 电子教鞭演示工具 PointerStick v7.11
windows·自动化·工具·软件·多功能
Full Stack Developme19 小时前
Hutool TreeUtil 教程
大数据·windows
破阵子4432819 小时前
PowerShell-7 下载安装教程(如何更新 PowerShell)
windows
安当加密20 小时前
指纹一按,安全上线:指纹登录如何为生产线 Windows 电脑实现低成本防勒索?
windows·安全·电脑
不做超级小白20 小时前
解密Win11的Win+S搜索:从索引原理到自启动的攻防战
windows·安全