首页 > 编程语言 >关于Java中的List<User>如何进行深拷贝

关于Java中的List<User>如何进行深拷贝

时间:2024-09-26 16:24:02浏览次数:3  
标签:Java ArrayList List us User us1 new

联调中发现了一个很初级,但有容易被忽略的拷贝问题:

错误方式:

List<User> us = new ArrayList<>();

List<User> us1 = new ArrayList<>(us);

此种拷贝,如果修改了集合us中的User对象,us1会跟着改变;

找了网上很多方式:

1.clone方式

us的方法里边不存在clone;

2.addAll方法

不是深度拷贝,修改了集合us中的User对象,us1会跟着改变

3.us.stream().collect(Collectors.toList())

不是深度拷贝,修改了集合us中的User对象,us1会跟着改变

4.CollectionUtil.copy(us)

不是深度拷贝,修改了集合us中的User对象,us1会跟着改变;

解决方案:

1.原生写法

List<User> us = new ArrayList<>();

List<User> us1 = new ArrayList<>(us.size());
for (int i = 0; i < us.size(); i++) {
    User u = us.get(i);
    User tmp = new User();
	BeanUtil.copyProperties(u, tmp, false);
	us1.add(tmp);
}

2.hutool工具

List<User> us = new ArrayList<>();

List<User> us1 = CglibUtil.copyList(us, User::new);

总结

有时候老鸟也会晕呀!

标签:Java,ArrayList,List,us,User,us1,new
From: https://blog.csdn.net/qq_16116549/article/details/142529986

相关文章

  • 如何用Java SpringBoot构建老年人健康管理系统?三步轻松上手,选题不再难!
    ✍✍计算机毕业编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、小程序、大数据实战项目集⚡⚡文末获取......
  • java+vue计算机毕设本科生考勤与考核管理信息系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着高校规模的不断扩大和学生人数的急剧增加,传统的人工考勤与考核方式已难以满足高效、准确的管理需求。在日常教学管理中,学生考勤、成绩管理、选课......
  • java+vue计算机毕设班级管理系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着教育信息化的不断深入发展,传统的班级管理模式已难以满足当前高效、精准、便捷的管理需求。传统方式下,学生信息、成绩、宿舍分配、辅导员沟通、教......
  • java+vue计算机毕设报考意向分析系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着教育改革的深入和高校招生规模的不断扩大,学生报考高校及专业的选择日益成为影响个人未来发展的关键环节。然而,面对众多高校、复杂的专业设置以及......
  • Java基础-学习笔记18
    18反射1.反射机制反射机制允许程序在执行期借助于ReflectionAPI取得任何类的内部信息(比如成员变量、构造器、成员方法等等),并能操作对象的属性及方法。反射在设计模式和框架底层都会用到;加载完类之后,在堆中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对......
  • JavaScript对象方法
    对象方法已经讨论过hasOwnProperty(),propertyIsEnumerable()和isPrototypeOf()三个方法。以及静态函数,Object.create(),Object.getPrototypeOf()等。toString()方法无参数,返回一个表示调用这个方法的对象值的字符串。默认返回信息很少,例如对象:toLocaleString()方法该方......
  • Java单体服务和集群分布式SpringCloud微服务的理解
    单体应用存在的问题1.随着业务的发展开发变得越来越复杂。2.修改或者新增,需要对整个系统进行测试、重新部署。3.一个模块出现问题,很可能导致整个系统崩溃。4.多个开发团队同时对数据进行管理,容易产生安全漏洞。5.各个模块使用同一种技术进行开发,各个模块很难根据实际情况......
  • 【VUE】[Violation] Added non-passive event listener to a scroll-blocking...
    1.问题[Violation]Addednon-passiveeventlistenertoascroll-blocking<某些>事件.Considermarkingeventhandleras'passive'tomakethepagemoreresponsive.See<URL>译:[违规]向滚动阻止添加了非被动事件侦听器<某些>事件.请考虑将事件处理程序标记为“被......
  • 从 SQL 和 Java 的对比理解集合化,SQL 到底比 Java 优势在哪?
    同样的数据计算任务,用SQL写和用Java写,后者常常会长出数倍。代码长不仅仅是写起来很繁琐,也不利于理解整体业务逻辑结构,算法过程都湮没在细节中。为什么Java会比SQL长这么多?我们来回答这个问题,并引出程序语言的集合化概念。首先是针对集合的运算能力,这个很容易理解。......
  • (免费源码)计算机毕业设计必看必学 原创定制程序 java、PHP、python、小程序、文案全套
    PHP校园点餐小程序摘 要随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,校园点餐小程序被用户普遍使用,为方便用户能够可以随时进行校园点餐小程序的数据信息管理,特开发了基......