当前位置: 首页 > news >正文

Java中List转换成Map的两种方式

在 Java 中,将List转换为Map是常见操作,通常需要指定Map的键(Key)和值(Value),常用工具类有Java 8 Stream API

一 Java8 Stream API 

package list2map;import java.util.*;
import java.util.stream.Collectors;// 定义实体类
class User {private Long id;private String name;// 构造函数、getter、setter省略public User(Long id, String name) {this.id = id;this.name = name;}public Long getId() { return id; }public String getName() { return name; }
}public class ListToMapExample {public static void main(String[] args) {// 准备List数据List<User> userList = List.of(new User(1L, "Alice"),new User(2L, "Bob"),
//            new User(1L, "Bob"),如果两个id都是1,那么Bob会覆盖Alicenew User(3L, "Charlie"));// 转换为Map<id, User>Map<Long, User> userMap = userList.stream().collect(Collectors.toMap(User::getId,  // 键:User对象的iduser -> user,   // 值:User对象本身(oldValue,newValue) -> newValue, //冲突时取新值TreeMap::new //指定Map的实现类));//Map集合的遍历Set<Map.Entry<Long, User>> entries = userMap.entrySet();for (Map.Entry<Long, User> entry : entries) {System.out.println("entry.getKey() = " + entry.getKey());System.out.println("entry.getValue() = " + entry.getValue().getName());}}
}

二 传统方式

import java.util.HashMap;
import java.util.Map;Map<Long, User> userMap = new HashMap<>();
for (User user : userList) {userMap.put(user.getId(), user);  // 手动put键值对
}

三 总结

  • 推荐方式:使用Stream.collect(Collectors.toMap()),代码简洁且支持灵活配置。
  • 核心要素:明确键(Key)、值(Value)的提取规则,处理可能的重复键冲突。
  • 扩展场景:可根据需求转换为不同的Map实现类,或只保留对象的部分属性作为值。

http://www.dtcms.com/a/395519.html

相关文章:

  • 嵌入式 - RAM10
  • Qwen新开源tongyi-DeepResearch:核心优势
  • Java Stream API性能优化实践指南
  • Qt配置序列化与反序列化实战:QSettings的深度应用指南
  • MySQL下载时出现“starting the server”或“initializing错误”的原因以及解决方案
  • MySQL 数据库核心知识点详解
  • 让机器人边思考边行动!新一代具身智能EO-1:统一架构突破VLA瓶颈
  • 数据库笔试选择题:题组1
  • 一款相机是只有桶形畸变 和 枕形畸变的一种,还是两个都有?
  • 德克西尔井盖异动传感器:城市安全的隐形守护者
  • HTML基本标签一
  • BGP高防服务器具体是指什么
  • 打工人日报#20250922
  • Django视图与路由
  • 在thinkphp8的模板文件中 如何调用公共服务类函数
  • Nextcloud增加模块内嵌网页
  • Ubuntu18.04 MySQL5.7.42 内存升高导致OOM MySQL重启解决办法
  • html调起exe程序
  • C#中的Task怎么理解,理解异步编程的核心
  • fastApi框架开发一个web端仓库管理系统
  • mosquitto求医之路(3):Docker安装也不好使
  • 字节 TRAE:AI 原生 Coding Agent 的工程化架构与实战落地
  • 保姆级教程:windows和linux双系统的电脑如何无副作用,安全删除linux
  • SSM宠物领养平台16e63(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 大前端系统课教程(视频教程)
  • Bulutistan:融合本地与云端,借 Azure Arc 开启创新之旅
  • 北极象沉浸式翻译 - 沉浸式翻译 | 免费翻译 | PDF翻译
  • C++编码
  • WKT、WKB和GeoJson
  • 【开题答辩全过程】以 基于大数据的混合音乐推荐系统为例,包含答辩的问题和答案