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

相关推荐
墨染点香11 分钟前
LeetCode Hot100【6. Z 字形变换】
java·算法·leetcode
心情好的小球藻29 分钟前
Python应用进阶DAY9--类型注解Type Hinting
开发语言·python
ldj202034 分钟前
SpringBoot为什么使用new RuntimeException() 来获取调用栈?
java·spring boot·后端
超龄超能程序猿34 分钟前
Spring 应用中 Swagger 2.0 迁移 OpenAPI 3.0 详解:配置、注解与实践
java·spring boot·后端·spring·spring cloud
惜.己41 分钟前
使用python读取json数据,简单的处理成元组数组
开发语言·python·测试工具·json
风象南1 小时前
SpringBoot配置属性热更新的轻量级实现
java·spring boot·后端
洛阳泰山1 小时前
Spring Boot 整合 Nacos 实战教程:服务注册发现与配置中心详解
java·spring boot·后端·nacos
Y4090011 小时前
C语言转Java语言,相同与相异之处
java·c语言·开发语言·笔记
YuTaoShao1 小时前
【LeetCode 热题 100】994. 腐烂的橘子——BFS
java·linux·算法·leetcode·宽度优先
布朗克1681 小时前
java常见的jvm内存分析工具
java·jvm·数据库