java8 Stream()流 list转map

javascript 复制代码
   List<User> list = new ArrayList<>();
   User user1 = new User();
   user1.setUserId("1");
   user1.setUserName("李四1");
   list.add(user1);
   User user2 = new User();
   user2.setUserId("2");
   user2.setUserName("李四2");
   list.add(user2);

Stream流中将List转换为Map,是使用Collectors.toMap方法来进行转换。

1.key和value都是对象中的某个属性值。

复制代码
Map<String, String> userMap = userList.stream().collect(Collectors.toMap(User::getUserId, User::getUserName));

输出map结果Json格式:{"1":"李四1","2":"李四2"}

2.key是对象中的某个属性值,value是对象本身(使用返回本身的lambda表达式)。

复制代码
Map<String, User> userMap = userList.stream().collect(Collectors.toMap(User::getUserId, User -> User));

输出map结果Json格式:{"1":{"1":"李四1"},"2":{"2":"李四2"}}

3.key是对象中的某个属性值,value是对象本身(使用Function.identity()的简洁写法)。

复制代码
Map<String, User> userMap = userList.stream().collect(Collectors.toMap(User::getUserId, Function.identity()));

输出map结果Json格式:{"1":{"1":"李四1"},"2":{"2":"李四2"}}

4.key是对象中的某个属性值,value是对象本身,当key冲突时选择第二个key值覆盖第一个key值。

复制代码
Map<String, User> userMap = userList.stream().collect(
	Collectors.toMap(User::getUserId, Function.identity(), (oldValue, newValue) -> newValue));

5.key是对象中的某个属性值,value是List对象

复制代码
Map<String, List<User>> dataUserMap = userList.stream().collect(
                Collectors.groupingBy(User::getUserId, Collectors.toList()));
相关推荐
Filotimo_8 小时前
EntityGraph的概念
java·开发语言·数据库·oracle
wregjru8 小时前
【读书笔记】Effective C++ 条款1~2 核心编程准则
java·开发语言·c++
love530love8 小时前
Windows 11 下再次成功本地编译 Flash-Attention 2.8.3 并生成自定义 Wheel(RTX 3090 sm_86 专属版)
人工智能·windows·笔记·编译·flash_attn·flash-attn·flash-attention
heartbeat..8 小时前
Servlet 全面解析(JavaWeb 核心)
java·网络·后端·servlet
vx_bisheyuange9 小时前
基于SpringBoot的疗养院管理系统
java·spring boot·后端
村口曹大爷9 小时前
JDK 24 正式发布:性能压轴,为下一代 LTS 铺平道路
java·开发语言
1.14(java)9 小时前
MySQL数据库操作全攻略
java·数据库·mysql
Web极客码9 小时前
使用VPS主机进行数据分析的主要优势
linux·windows·vps主机
正远数智9 小时前
深度解析:SRM系统如何赋能采购库存协同
java·lowcode
青岛少儿编程-王老师9 小时前
CCF编程能力等级认证GESP—C++1级—20251227
java·c++·算法