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属性的值都发生了改变。

相关推荐
草履虫建模几秒前
Java面试应对思路和题库
java·jvm·spring boot·分布式·spring cloud·面试·mybatis
I_LPL11 分钟前
day32 代码随想录算法训练营 动态规划专题1
java·数据结构·算法·动态规划·hot100·求职面试
~央千澈~15 分钟前
抖音弹幕游戏开发之第9集:pyautogui进阶 - 模拟鼠标操作·优雅草云桧·卓伊凡
开发语言·python·游戏
Forget_855022 分钟前
RHEL——web应用服务器TOMCAT
java·前端·tomcat
遇见你的雩风25 分钟前
【Golang】--- Goroutine
开发语言·golang
v沙加v26 分钟前
Java Rendering Engine Unknown
java·开发语言
张3蜂27 分钟前
python知识点点亮
开发语言·python
好学且牛逼的马27 分钟前
【Hot100|26-LeetCode 21. 合并两个有序链表 - 完整解法详解】
开发语言·python
星月总相伴29 分钟前
python作用域
开发语言·python
阿里嘎多学长31 分钟前
2026-02-15 GitHub 热点项目精选
开发语言·程序员·github·代码托管