Java 8 Convert List to Map
本文通过多个 Java 8 示例,详细演示如何将对象列表(List)转换为映射(Map),并重点讲解如何优雅处理重复键问题,以及如何在转换前排序并保持顺序。
1. 基础转换:Collectors.toMap()
首先定义一个 Hosting 类:
Hosting.java
package com.mkyong.java8;
public class Hosting {
private int Id;
private String name;
private long websites;
public Hosting(int id, String name, long websites) {
Id = id;
this.name = name;
this.websites = websites;
}
// 标准 getter、setter 和 toString() 方法
public int getId() { return Id; }
public void setId(int id) { Id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public long getWebsites() { return websites; }
public void setWebsites(long websites) { this.websites = websites; }
@Override
public String toString() {
return "Hosting{" +
"Id=" + Id +
", name='" + name + '\'' +
", websites=" + websites +
'}';
}
}
创建一个 Hosting 对象列表,并使用 Collectors.toMap() 将其转换为 Map。
TestListMap.java
package com.mkyong.java8;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class TestListMap {
public static void main(String[] args) {
List<Hosting> list = new ArrayList<>();
list.add(new Hosting(1, "liquidweb.com", 80000));
list.add(new Hosting(2, "linode.com", 90000));
list.add(new Hosting(3, "digitalocean.com", 120000));
list.add(new Hosting(4, "aws.amazon.com", 200000));
list.add(new Hosting(5, "mkyong.com", 1));
// key = id, value = name
Map<Integer, String> result1 = list.stream().collect(
Collectors.toMap(Hosting::getId, Hosting::getName));
System.out.println("Result 1 : " + result1);
本章节需登录后查看完整内容,当前为预览。
登录后阅读全文Course Curriculum
1
编程根基:数据结构、算法与系统基础
掌握常用数据结构与算法思想,理解操作系统进程/内存管理及网络 TCP/IP 模型,为后续性能分析、并发设计和系统调优提供底层认知支撑。
2
Java 内核:JVM 与并发编程
深入 JVM 内存布局、垃圾回收机制与 Java 内存模型,熟练使用并发工具类与锁原语,写出线程安全、低延迟、可诊断的高性能 Java 代码。
3
框架与 I/O:Spring、Netty 与 Web 容器
理解 Spring Boot 自动装配、AOP 与事务原理,掌握 Netty Reactor 模型及 Tomcat 连接处理机制,构建高内聚、易扩展的应用服务层。
4
高性能中间件:消息、缓存与存储
熟练运用 MySQL 索引/事务、Redis 缓存策略、Kafka/RocketMQ 消息可靠性,以及 ZooKeeper 分布式协调,搭建稳定、解耦的分布式数据底座。
5
架构能力:高可用、DDD 与系统设计
基于领域驱动设计划分限界上下文,结合限流、熔断、多活容灾等手段,设计可演进、可观测、故障自愈的大规模业务系统。