list转map

1. List 转 Map<Integer,List>

Map<Integer, List<User>> subLineInfoMap = userInfos .stream().collect(Collectors.groupingBy(User::getSex));

2. List 转 Map<Integer,User>

Map<Long, User>userMap = userInfos.stream().collect(Collectors.toMap(User::getStuNum,Function.identity()));

3. List 转 Map<Integer,String>

Map<Integer, String> collect = userInfos.stream().collect(Collectors.toMap(User::geUserNum, User::getUserName));

4. list 转 map 保持顺序

LinkedHashMap<String, User> userMap = users.stream().collect(LinkedHashMap::new, (map, item) -> map.put(item.getAccountId(), item), Map::putAll);

5. 将list转成map 并排序

将list 排序,并按照排序后的结果进行有序分组

LinkedHashMap<String, List<AlarmData>> alarmMap = alarmDataList.stream().sorted(Comparator.comparing(t->t.getId().getData_time())).collect(Collectors.groupingBy(t->t.getId().getVirtualPointId(), LinkedHashMap::new, Collectors.toList()));

将map排序,并且每个key对应的list里面也是排序好的

6. 我们在利用Lambda 将list转成Map时就会出现 Duplicate key xxxx 的异常,意思就是对要转为map的key有重复了,除了进行for循环去重之外,我们还有其它方式能够优雅的处理它.

key重复时直接用后面的值(使用最新的或最老的值)

Map<String, Long> collect = list.stream().collect(Collectors.toMap(User::getExternalUserId, User::getUserId, (val1, val2) -> val2));

将两个值拼接起来

Map<String, Long> collect = list.stream().collect(Collectors.toMap(User::getExternalUserId, User::getUserId, (val1, val2) -> val1+val2));

将重复key的value变成一个集合,注意null值处理

Map<String, List<String>> tagMap = list.stream().collect(Collectors.toMap(User::getExternalUserId, s -> { List<String> tags = new ArrayList<>(); tags.add(s.getFollowTags()); return tags; }, (List<String> val1, List<String> val2) -> { val1.addAll(val2); return val1; } ));

相关推荐
q***615015 分钟前
Windows 上彻底卸载 Node.js
windows·node.js
宝桥南山3 小时前
.NET 10 - Blazor web assembly应用的一些诊断方式
microsoft·微软·c#·asp.net·.net·.netcore
百***06013 小时前
【Golang】——Gin 框架中的表单处理与数据绑定
microsoft·golang·gin
yanghuashuiyue6 小时前
windows vue3开发环境搭建
windows
uestc_Venn6 小时前
Windows 11系统出现User Profile Service 服务登录失败。无法加载用户配置文件。 的解决办法
windows·电脑
lkbhua莱克瓦246 小时前
Java项目——斗地主小游戏(控制台版)
java·开发语言·windows·斗地主项目
Yeats_Liao11 小时前
CANN Samples(三):入门示例ACLHelloWorld
前端·chrome·microsoft
7澄113 小时前
MySQL 数据库进阶:SQL 数据操作与子查询
数据库·microsoft·子查询·delete·insert·update·truncate
zt1985q13 小时前
外部访问 Python 搭建的 HTTP 服务器
运维·服务器·网络·windows·网络协议·http
love530love20 小时前
解决 ComfyUI 启动显示 ‘sox‘ 命令未找到错误:从安装到配置的完整指南
人工智能·windows·python·aigc·comfyui·comfyui-manager