首页 > 编程语言 >Java中List集合的addAll方法的小坑

Java中List集合的addAll方法的小坑

时间:2023-05-17 11:46:25浏览次数:34  
标签:Java firstList List 封装 secondList addAll

Java中List集合的addAll方法的小坑
遇到的问题
已有一个封装类的ArrayList的集合,命名为firstList,现在需要把firstList中的值复制给另一个List,另一个List命名为secondList,然后对secondList中封装类元素中的属性赋值。
然后在操作时发现,当使用set方法对secondList的封装类元素赋值时,firstList的封装类元素的值也会被修改。

结论
使用addALL方法赋值的时候,其实是将原list元素的引用给了另一个List,当修改secodList封装类的属性值时,同时会修改原list的封装类的属性值也会发生修改

解决方法
使用stream的map方法,重新创建一个封装类对象的List,然后再使用addAll,但是,会在堆中创建多个封装类对象,在栈中会创建一个新的List的指向这些对象,所以可能会出现问题。

List<ValuePO> collect = ValuePOList.stream().map(i -> ValuePO.builder() .date(i.getDate()) .build() .collect(Collectors.toList()); valueDayPOList.addAll(collect);

提醒
这只是在编写代码过程中偶然遇到的一个问题,没有经过其他的验证,可以作为一个思路的提醒。不可全心全用,谢谢。

标签:Java,firstList,List,封装,secondList,addAll
From: https://www.cnblogs.com/codeLearn/p/17408129.html

相关文章

  • Java数字转中文数字——支持:Integer、BigDecimal
    1、效果publicstaticvoidmain(String[]args){System.out.println(int2chineseNum(3456));System.out.println(int2chineseNum(-3456));System.out.println(bigDec2ChinaNum(newBigDecimal("12367.4852")));System.out.......
  • java 后端
    JFinal框架web.xml--接管所有请求--com.jfinal.core.JFinalFilterconfigClass设置配置文件数据层看着和c#比sql还是硬编码能看到,只是帮你事先生成。这个都没看到sql,感觉是用的时候再去生成。ModelModelAextendsBaseModelA<ModelA>extendsModel<MextendsModel>renderJson......
  • javafx做的编辑器
    javafx做的编辑器,这个是基本雏形。这个代码是一个完整的文本编辑器,可以进行新建、打开、保存、另存为、剪切、复制、粘贴、删除、撤销、重做、全选等操作。packagecom.example.javafxproject;importjavafx.application.Application;importjavafx.application.Platform;im......
  • Java split方法一个或多个特殊字符分割
    publicstaticvoidmain(String[]args){ Strings="ab|cd|ef";//Strings="ab;cd,ef";//String[]split=s.split(";|,"); String[]split=s.split("\\|");// System.out.println(split[0]); for(in......
  • Java-javap简单演示
     下面是2小段Java代码:shorts1=1;s1=s1+1;有什么错?shorts1=1;s1+=1;有什么错?  java里面这种类型不同的相加会报错吧?1是int。有拆箱和装箱,也有一定包含,不都是错的。short是2个字节,int是4个字节,long是8个字节,所以short类型用int接受问题不大,int类型用lon......
  • JAVA面试题及解析
    Java中有哪些集合Java中的集合可以分为4类,使用4个接口代表,分别是ListSetQueueMap。其中ListSetQueue都继承自Collection。List:是有序可重复集合,元素可为空,常用的有ArrayListLinkedListSet:无序不可重复集合元素可为空,常用的有HashSetTreeSetQueue:先进先出的队列,常......
  • 【android】Android入门第六篇之ListView
    ListView是一个经常用到的控件,ListView里面的每个子项Item可以是一个字符串,也可以是一个组合控件。先说说ListView的实现:1.准备ListView要显示的数据 ;2.使用 一维或多维 动态数组 保存数据;3.构建适配器 , 简单地来说, 适配器就是 Item数组 , 动态数组 有多少元素就生成......
  • java8 lamda表达式
    list分组1.多字段联合,分组list.stream().collect(Collectors.groupingBy(o->o.getSkuName()+"_"+o.getOeCode(),Collectors.toList()));2.求和计算 Integernum=list.stream().mapToInt(n->n.getNum()).sum();3.分组-排序list.stream().coll......
  • Java基础整理
    环境配置在IDEA创建空项目后,new一个module!标准配置:jdk1.8+language8注释//单行注释/**/多行注释文档注释JavaDoc/***@author*@description*/设置注释的字体和样式,在IDEA中按以下步骤settings->Editor->colorscheme->java->comment强(弱)类型语言强类......
  • java 连接 sqlserver 报错
    使用最新的sqlserver驱动报错:com.zaxxer.hikari.pool.HikariPool$PoolInitializationException:Failedtoinitializepool:"encrypt"propertyissetto"true"and"trustServerCertificate"propertyissetto"false"butthedri......