ArrayList clone()– ArrayList深拷贝和浅拷贝

示例程序以ArrayList克隆方法为例。 学生对象上的ArrayList深层复制和浅层复制示例。

1.简介

ArrayList clone()– ArrayList深复制和浅复制ArrayList clone()方法用于创建list的浅表副本 。 在新列表中,仅复制对象引用。 如果我们在第一个ArrayList中更改对象状态,则更改后的对象状态也将反映在克隆的ArrayList中。

2. ArrayList克隆–浅拷贝示例

将字符串列表复制到花药列表的示例程序
clone()

 package com.java.w3schools.blog.arraylist;  import java.util.ArrayList;  import java.util.List;  /** * * Java ArrayList Clone Example * * @author Java8Example blog * */  public class ArrayListCloneExample { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add( "one" ); list.add( "two" ); list.add( "three" ); list.add( "four" ); list.add( "give" ); System.out.println( "Before clone : " + list); ArrayList clonedLis = (ArrayList) list.clone();   System.out.println( "After clone : " +clonedLis); }  } 

输出:

 Before clone : [one, two, three, four, give]  After clone : [one, two, three, four, give] 

3. ArrayList克隆–自定义浅复制示例

示例程序将ArrayList与自定义对象进行浅表复制。 对克隆对象的修改反映在原始对象中。 观察该程序的输出。

 package com.java.w3schools.blog.arraylist;  import java.util.ArrayList;  /** * * Java ArrayList Clone Example with custom object * * @author Java8Example blog * */  public class ArrayListShalloCloneExample { public static void main(String[] args) { ArrayList<Student> list = new ArrayList<>(); list.add( new Student( 100 , "harish" )); list.add( new Student( 101 , "Jayaram" )); ArrayList<Student> clonedList = (ArrayList) list.clone(); Student student = clonedList.get( 1 ); student.setName( "Jhon" ); System.out.println( "Cloned list : " + clonedList); System.out.println( "Original list : " + list); }  }  class Student { private int id; private String name; public Student( int id, String name) { super (); this .id = id; this .name = name; } public int getId() { return id; } public void setId( int id) { this .id = id; } public String getName() { return name; } public void setName(String name) { this .name = name; } @Override public String toString() { return "Student [id=" + id + ", name=" + name + "]" ; }  } 

输出:

 Cloned list : [Student [id= 100 , name=harish], Student [id= 101 , name=Jhon]]  Original list : [Student [id= 100 , name=harish], Student [id= 101 , name=Jhon]] 

4. ArrayList克隆–深度复制示例

下面的程序创建对象的深层副本。 对克隆列表的修改不会影响原始列表。

 public class ArrayListDeepCloneExample { public static void main(String[] args) { ArrayList<Student> list = new ArrayList<>(); list.add( new Student( 100 , "harish" )); list.add( new Student( 101 , "Jayaram" )); ArrayList<Student> clonedList = new ArrayList<>(); Iterator<Student> it = list.iterator(); while (it.hasNext()) { Student s = it.next(); Student newS = new Student(s.getId(), s.getName()); clonedList.add(newS); } Student student = clonedList.get( 1 ); student.setName( "Jhon" ); System.out.println( "Cloned list : " + clonedList); System.out.println( "Original list : " + list); }  } 

输出:

 Cloned list : [Student [id= 100 , name=harish], Student [id= 101 , name=Jhon]]  Original list : [Student [id= 100 , name=harish], Student [id= 101 , name=Jayaram]] 

5.结论

在本文中,您了解了如何克隆ArrayList以及有关ArrayList的浅表复制和深表复制的示例。

GitHub代码1
GitHub代码2
GitHub代码3

翻译自: https://www.javacodegeeks.com/2020/04/arraylist-clone-arraylist-deep-copy-and-shallow-copy.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

南京邮电大学c语言实验报告4,南京邮电大学算法设计实验报告——动态规划法...

《南京邮电大学算法设计实验报告——动态规划法》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《南京邮电大学算法设计实验报告——动态规划法(12页珍藏版)》请在人人文库网上搜索。1、实 验 报 告(2009/2010学年 第一学期)课程名称算法分析与设计A实验名称动 态 规 …

启动jboss_3种启动JBoss BPM流程的基本方法

启动jboss这一集提示和技巧将帮助您了解根据需要启动流程实例的最佳方法。 规划项目可能包括流程项目&#xff0c;但是您是否考虑过可以启动流程的各种方式&#xff1f; 也许您的JBoss BPM Suite在您的体系结构中本地运行&#xff0c;也许您在云中运行&#xff0c;但是无论它…

单片机控制灯光亮度c语言程序,基于51单片机控制LED灯光亮度并报警

利用pwm控制led灯光亮度大小。可以显示许多亮度等级 到最低或者最高亮度等级会发出报警。设计思路&#xff1a;LED一般是恒流操作的&#xff0c;如何改变LED的亮度呢&#xff1f;答案就是PWM控制。在一定的频率的方波中&#xff0c;调整高电平和低电平的占空比&#xff0c;即可…

将Quarkus应用程序部署到AWS Elastic Beanstalk

Elastic Beanstalk允许在AWS云中部署和管理应用程序&#xff0c;而无需了解运行这些应用程序的基础架构。 使用Elastic Beanstalk&#xff0c;您可以运行可处理HTTP请求的网站&#xff0c;Web应用程序或Web API&#xff0c;但也可以运行辅助应用程序以运行长任务。 Elastic Be…

c语言中rand()%900,c语言 n=rand()%5是什么意思

rand()函数会产生范围为0至32767的随机数&#xff0c;% 让它与5求余&#xff0c;变成0至4的随机数&#xff0c;不过每次启动程序产生的随机数都相等&#xff0c;在用srand(unsigned int)输入种子数后产生的才不一样&#xff0c;一般都用的 srand((unsigned int)time(NULL)) 产生…

gradle 构建应用流程_使用Gradle构建和应用AST转换

gradle 构建应用流程最近&#xff0c;我想在Gradle项目中构建并应用本地ast转换。 虽然我可以找到几个有关如何编写转换的示例&#xff0c;但找不到完整的示例来显示完整的构建过程。 转换必须单独编译然后放在类路径中&#xff0c;因此其源代码不能简单地放在Groovy源代码树的…

c语言malloc calloc,C语言内存管理:malloc、calloc、free的实现

任何一个对C稍稍有了解的人都知道malloc、calloc、free。前面两个是用户态在堆上分配一段连续(虚拟地址)的内存空间&#xff0c;然后可以通过free释放&#xff0c;但是&#xff0c;同时也会有很多人对其背后的实现机制不了解。这篇文章则是通过介绍这三个函数&#xff0c;并简单…

在雅加达EE TCK中使用Arquillian的可能方法

最近&#xff0c;我们讨论了如何创建独立的Jakarta Batch测试套件&#xff08;TCK&#xff09;。 对于大多数提交者而言&#xff0c;使用Arquillian将测试从实现中如何执行抽象化是很自然的。 但是Romain提出了一个有趣的想法&#xff0c;即使用纯JUnit5引起了我的思考。 它并没…

c语言怎么循环输入单个字符,c语言 帮我检查一下 输入一段文字,每行用回车结束,文字输入完毕可以使用某个特殊字符作为结束,...

c语言 帮我检查一下 输入一段文字&#xff0c;每行用回车结束&#xff0c;文字输入完毕可以使用某个特殊字符作为结束&#xff0c;0HIDE152019.04.28浏览4次分享举报c语言输入一段文字&#xff0c;每行用回车结束&#xff0c;文字输入完毕可以使用某个特殊字符作为结束&#xf…

gradle发布jar_使用Gradle将JAR工件发布到Artifactory

gradle发布jar因此&#xff0c;我浪费了一两天&#xff08;只是投资&#xff09;来了解如何使用Gradle将JAR发布到本地运行的Artifactory服务器。 我使用Gradle Artifactory插件进行发布。 我迷失在无穷循环中&#xff0c;包括各种版本的各种插件和执行各种任务。 是的&#xf…

c++语言 自己构造函数 成员对象构造函数 调用顺序,C++类成员构造函数和析构函数顺序示例详细讲解...

对象并不是突然建立起来的&#xff0c;创建对象必须时必须同时创建父类以及包含于其中的对象。C遵循如下的创建顺序&#xff1a;(1)如果某个类具体基类&#xff0c;执行基类的默认构造函数。(2)类的非静态数据成员&#xff0c;按照声明的顺序创建。(3)执行该类的构造函数。即构…

最新的20多个JMS面试问答(2020)

快速浏览JMS&#xff08;Java消息服务&#xff09;常见问题面试问题和答案。 2020年以来的最新问题已添加到列表中。 1.简介 在本教程中&#xff0c;我们将了解2020年常见的JMS面试问题。作为面试的一部分&#xff0c;如果您有6年以上的经验&#xff0c;就有机会在JMS领域提出…

【学习笔记】SAR相关概念

文章目录 1. 基础SAR—复数据转换—多视处理—自适应滤波—地理编码—斜地距转换—地形辐射校正—转DB影像 2. SAR 平差—自动匹配—区域网平差—几何精校正—镶嵌线编辑 3.干涉 SAR(InSAR/DInSAR)—配准—干涉图计算—基线计算—去除平地相位—相干性计算—干涉图滤波—相位解…

c语言逆序输出6A8F,【C语言】将二进制数逆序输出。比如6为000...0110,逆序后为0110....

//将二进制数逆序输出。比如6为000...0110,逆序后为0110...000#include unsigned int reverse_bit(int num){int i;int bit;unsigned new_num 0;for (i 0; i//将二进制数逆序输出。比如6为000...0110,逆序后为0110...000#include unsigned int reverse_bit(int num){int i;in…

加载dll api_运行时类加载以支持不断变化的API

加载dll api我维护一个IntelliJ插件 &#xff0c;可以改善编写Spock规范的体验。 这个项目的挑战是在单个代码库中支持多个且不兼容的IntelliJ API版本。 回想起来&#xff0c;该解决方案很简单&#xff08;这是野外适配器模式的一个示例&#xff09;&#xff0c;但是最初它需要…

12生肖 c语言设计,语言十二生肖教案

十二生肖中班教案十二生肖教案反思语言教案十二生肖点击进入查看全文2010虎年运势测算&#xff0c;走好运&#xff0c;发大财&#xff01;宝宝三个月&#xff0c;来说一说之前购买的海量的婴儿用品的使用况(配合图片)&#xff0c;大家可以都来讨论一下吧。太败了&#xff0c;之…

Quarkus的其他(非标准)CDI功能

Quarkus支持CDI&#xff08;上下文和依赖注入&#xff09;2.0&#xff0c;但并非全部&#xff0c;仅支持最常见的功能。 但是&#xff0c;Quarkus确实包含一些非标准功能&#xff0c;这些功能对于开发人员非常方便&#xff0c;我想在下面的视频中进行展示。 不管您是否熟悉CDI…

c语言输出星期几的英语表达,C语言程序设计: 输入年月日 然后输出是星期几...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include main(){int year,month,day0,a,b,week,c,i,sum0,days,d;printf("please input year,month,days\n");scanf("%d,%d,%d",&year,&month,&days);for(i1;i{if (year%40){if(year%1000){if (ye…

将Visual Studio Code设置为jshell中的默认编辑器

Java Shell&#xff08; jshell &#xff09;是用于在Java中学习和进行原型制作的交互式工具。 它是在Java 9中引入的&#xff0c;从那以后&#xff0c;我在演示过程中偶尔使用它来进行一些快速原型制作&#xff0c;或者只是为了验证Java语言中的新功能。 由于jshell是命令行工…

c语言中组合函数,排列组合c怎么算 公式是什么

排列有两种定义&#xff0c;但计算方法只有一种&#xff0c;凡是符合这两种定义的都用这种方法计算。定义的前提条件是m≦n&#xff0c;m与n均为自然数。下面介绍排列组合c的计算方法及公式&#xff0c;供参考。排列组合中A和C怎么算排列A(n,m)n(n-1).(n-m1)n!/(n-m)!(n为下标,…