首页 > 编程语言 >java 深拷贝与浅拷贝

java 深拷贝与浅拷贝

时间:2024-04-11 12:33:16浏览次数:32  
标签:java List list Person new 拷贝

在 Java 中,List 是一个接口,常见的实现类有 ArrayList 和 LinkedList。当我们需要复制一个 List 时,通常有两种方法:浅拷贝和深拷贝。浅拷贝只复制 List 中的引用,而深拷贝则会复制 List 中的所有元素。下面我们来看一下如何实现 List 的深拷贝。

假设我们有一个 Person 类,包含 name 和 age 两个属性:

csharp public class Person {     private String name;     private int age;

public Person(String name, int age) {         this.name = name;         this.age = age;     }

public String getName() {         return name;     }

public int getAge() {         return age;     } }

现在我们有一个 List,其中包含了一些 Person 对象:

java import java.util.ArrayList; import java.util.List;

public class DeepCopyExample {     public static void main(String[] args) {         List list = new ArrayList<>();         list.add(new Person("Tom", 18));         list.add(new Person("Jerry", 20));         list.add(new Person("Mike", 22));         System.out.println("Original list: " + list);     } }

要实现 List 的深拷贝,可以使用 java.util.ArrayList 的构造函数:

java import java.util.ArrayList; import java.util.List;

public class DeepCopyExample {     public static void main(String[] args) {         List list = new ArrayList<>();         list.add(new Person("Tom", 18));         list.add(new Person("Jerry", 20));         list.add(new Person("Mike", 22));         System.out.println("Original list: " + list);

// 深拷贝         List copy = new ArrayList<>(list);         System.out.println("Copy list: " + copy);     } }

上述代码中,我们使用 ArrayList 的构造函数来创建一个新的 List,并将原始列表作为参数传递进去。这样创建的新列表就是原始列表的深拷贝。

标签:java,List,list,Person,new,拷贝
From: https://www.cnblogs.com/bigleft/p/18128828

相关文章

  • Java程序设计教程(第九版)1.4Java编程语言
    目录1.4Java编程语言Java程序注释标识符和保留字空白符1.4Java编程语言ava是第一种能够将编写的程序在Web浏览器中执行的语言Java程序基本结构:注释类(class)的定义方法注释注释应当揭示程序的初衷或意图,注释将被计算机忽略,并不影响程序执行两种注释形式://……(被......
  • Java程序设计教程(第九版)1.3网络
    目录1.3网络网络连接局域网和广域网因特网万维网统一资源定位器1.3网络网络就是将两台或多台计算机连接在一起,以便实现信息交换简单的计算机网络中,有一台用作文件服务器的计算机,用于保存网络用户需要用到的程序和数据网络连接网络连接方式近距离:点对点连接缺点......
  • Java程序设计教程(第九版)第一章计算机系统概述
    目录本章目标1.1计算机处理过程硬件软件数字计算机模拟技术数字技术二进制数1.2硬件组件计算机结构输入/输出设备主存储器和辅助存储器中央处理器本章目标软硬件关系软件类型及用法核心硬件及作用硬件如何协同执行程序、管理数据如何共享信息初解Java程序编......
  • java如何快速转Go
    话不多说,我说说如何快速转Go 因为项目需要,我不得不使用Go开发项目,不要看Go是一门新语言,其实Java转Go,还是很快的,最多一周时间。 很多人谈起Go,都会联想到云原生相关技术,比如Docker、Kubernetes,并且都会想到Go的性能比Java好,Go是静态编译语言,占用内存少,并且不需要运行在虚拟机......
  • 【附源码】JAVA计算机毕业设计小型家政服务管理系统的设计与实现(源码+mysql+文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着社会的快速发展和人们生活节奏的加快,家政服务行业应运而生,并迅速发展壮大。越来越多的家庭开始聘请家政人员来帮助处理家庭日常事务,如清洁、烹饪、......
  • 数据结构之顺序表(java语言版)
    顺序表是最简单的线性表,也就是数组。很多语言都把把它当做内置的基本数据类型,这里的数组没有对应数据结构的操作。数组是顺序存储的结构,连续分配一段内存用于存储数据。在逻辑结构和物理结构上都是连续的。顺序表建立在java内置的数组上建立顺序表。publicclassArray{ pri......
  • 数据结构之栈(java语言版)
    栈(stack):在逻辑上是一种线性存储结构,它有以下几个特点:1、栈中数据是按照"后进先出(LIFO,LastInFirstOut)"方式进出栈的。2、向栈中添加/删除数据时,只能从栈顶进行操作。栈通常包括的三种操作:push、peek、pop。push--向栈中添加元素。peek--返回栈顶元素。pop--返......
  • 数据结构之队列(java语言版)
    队列(Queue):在逻辑上是一种线性存储结构。它有以下几个特点:1、队列中数据是按照"先进先出(FIFO,First-In-First-Out)"方式进出队列的。2、队列只允许在"队首"进行删除操作,而在"队尾"进行插入操作。队列通常包括的两种操作:入队列和出队列。队列的种类也很多,单向队列,双向队列,循......
  • 数据结构之二叉树(java语言版)
    之前的都是线性结构,而树结构在计算机应用中的应用更加广泛。linux中的目录结构,某些数据库的底层存储等,都是采用树结构进行构架的。树的概念线性表是一对一的关系,而树是一对多的关系。树的结点:包含一个数据元素及若干指向子树的分支;孩子结点:结点的子树的根称为该结点的孩子;双......
  • 使用java代码删除nexus maven仓库中的jar包和pom.xml等组件
    pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://ma......