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; } ));

相关推荐
埃博拉酱10 小时前
VS Code Remote SSH 连接 Windows 服务器卡在"下载 VS Code 服务器":prcdn DNS 解析失败的诊断与 BITS 断点续传
windows·ssh·visual studio code
唐宋元明清21881 天前
.NET 本地Db数据库-技术方案选型
windows·c#
加号31 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
tryCbest1 天前
Windows环境下配置pip镜像源
windows·pip
呉師傅1 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑
百事牛科技1 天前
保护文档安全:PDF限制功能详解与实操
windows·pdf
一个人旅程~1 天前
如何用命令行把win10/win11设置为长期暂停更新?
linux·windows·经验分享·电脑
一个假的前端男1 天前
[特殊字符] Flutter 安装完整指南 Windows—— 2026最新版
windows·flutter
科技前瞻观察1 天前
腾讯控股下的销售易,如何重塑中国CRM格局?
microsoft
倚肆1 天前
在 Windows Docker 中安装并配置 Nginx (映射 Windows 端口与路径)
windows·nginx·docker