Java通过流处理和 Collectors.toMap 得到的Map是浅拷贝

通过流处理和 Collectors.toMap 得到的Map是浅拷贝
实验
java 复制代码
public void testCategoryMapper(){
//       List<CourseCategoryTreeDto> courseCategoryTreeDtos = courseCategoryService.queryTreeNodes("1");
//        log.info(courseCategoryTreeDtos.toString());
       QueryCourseParamDto queryCourseParamDto1 = new QueryCourseParamDto();
       queryCourseParamDto1.setCourseName("1");
       queryCourseParamDto1.setAuditStatus("1");
       queryCourseParamDto1.setPublishStatus("1");

       QueryCourseParamDto queryCourseParamDto2 = new QueryCourseParamDto();
       queryCourseParamDto2.setCourseName("2");
       queryCourseParamDto2.setAuditStatus("2");
       queryCourseParamDto2.setPublishStatus("2");

       ArrayList<QueryCourseParamDto> queryCourseParamDtos = new ArrayList<>();
       queryCourseParamDtos.add(queryCourseParamDto1);
       queryCourseParamDtos.add(queryCourseParamDto2);


       Map<String, QueryCourseParamDto> map = queryCourseParamDtos.stream().collect(Collectors.toMap(QueryCourseParamDto::getCourseName, e -> e));

       map.get("1").setPublishStatus("xxx");

       queryCourseParamDtos.stream().forEach(e -> {
           System.out.println(e);
       });
   }

其实从图中就可以看出Map中第一个元素的地址和原列表中第一个元素的地址是相同的,所以做的是浅拷贝。

执行完操作之后,列表中元素的publicStatus属性和Map中元素的publicStatus属性的值都发生了改变。

相关推荐
我不是懒洋洋1 分钟前
【数据结构】顺序表专题(详细代码及配图)
c语言·开发语言·数据结构·算法·青少年编程·visual studio
Java源码jdk2 分钟前
基于javaweb和mysql的springboot校园二手书交易管理系统(java+springboot+vue+elementui+layui+mysql)
java·spring boot·mysql
listhi5207 分钟前
基于在线优化的快速模型预测控制(Fast Online MPC)MATLAB实现
开发语言·matlab
毕设源码-邱学长9 分钟前
【开题答辩全过程】以 校园博客系统 为例,包含答辩的问题和答案
java
毕设源码-赖学姐10 分钟前
【开题答辩全过程】以 小学体育用品管理系统为例,包含答辩的问题和答案
java
SimonKing14 分钟前
GitHub热榜1k星影视壳(OuonnkiTV)遇上AI影视源
java·后端·程序员
创梦流浪人15 分钟前
Soli Admin:面向复杂业务场景的模块化企业后台基础平台
java·erp·后台管理系统
CoderCodingNo16 分钟前
【CSP】CSP-J 2025真题 | 多边形 luogu-P14360 (相当于GESP六级水平)
开发语言·c++·算法
程序员侠客行19 分钟前
Tomcat 网络I/O模型浅析
java·tomcat·web
一直都在57223 分钟前
AQS详解
java·开发语言