Java Map 接口全面指南:结构、实现类与核心方法
Java Map 接口
本教程深入剖析 Java Map 接口,涵盖其结构、实现类、关键方法及实战用法。
Map 接口属于 java.util 包,为 Java 集合框架中的键值对集合提供基础支撑。
Map 的工作原理
在 Java 中,Map 以 唯一键值对 存储数据。每个键唯一且映射单个值,确保无重复键。
可通过键检索或更新对应的值。

例如,键 us、br、es 分别映射到值 United States、Brazil、Spain。
值得注意的是,Map 接口管理三个不同的集合:
- 所有键的集合
- 所有值的集合
- 所有键值关联(条目)的集合
这些集合允许独立访问键、值或条目。
实现 Map 的类
因 Map 是接口,无法直接实例化。需使用以下具体类(均在 java.util 包):
HashMapEnumMapLinkedHashMapWeakHashMapTreeMap

扩展 Map 的子接口
Map 接口被多个专用子接口扩展,增加排序或并发保证:
SortedMap— 按键维护条目排序。NavigableMap— 扩展SortedMap,增加导航方法。ConcurrentMap— 提供线程安全操作。

在代码中使用 Map
先导入接口:
import java.util.Map;
再创建具体实例。例如使用 HashMap:
// 使用 HashMap 实现 Map
Map<Key, Value> numbers = new HashMap<>();
此处 Key 为唯一标识符,Value 为关联数据。
Map 的核心方法
除 Collection 接口方法外,Map 提供专用操作:
- put(K, V) — 添加键值对;键已存在则替换值。
- putAll() — 合并另一个 Map 的条目。
- putIfAbsent(K, V) — 仅当键未映射时插入。
- get(K) — 获取键对应的值,不存在返回
null。 - getOrDefault(K, defaultValue) — 返回映射值或指定默认值。
- containsKey(K) — 检查键是否存在。
- containsValue(V) — 检查值是否存在。
- replace(K, V) — 更新键对应的值。
- replace(K, oldValue, newValue) — 仅当当前值匹配时替换。
- remove(K) — 删除键对应的条目。
- remove(K, V) — 仅当键映射到指定值时删除。
- keySet() — 返回所有键的
Set。 - values() — 返回所有值的
Collection。 - entrySet() — 返回所有键值映射的
Set。
Map 实现类示例
1. HashMap 示例
import java.util.Map;
import java.util.HashMap;
class Main {
public static void main(String[] args) {
// 使用 HashMap 创建 Map
Map<String, Integer> numbers = new HashMap<>();
// 插入元素
numbers.put("One", 1);
numbers.put("Two", 2);
System.out.println("Map: " + numbers);
// 获取键
System.out.println("Keys: " + numbers.keySet());
// 获取值
System.out.println("Values: " + numbers.values());
// 获取条目
System.out.println("Entries: " + numbers.entrySet());
// 移除元素
int value = numbers.remove("Two");
System.out.println("移除的值: " + value);
}
}
输出
Map: {One=1, Two=2}
Keys: [One, Two]
Values: [1, 2]
Entries: [One=1, Two=2]
移除的值: 2
更多 HashMap 详情请访问 Java HashMap。
2. TreeMap 示例
import java.util.Map;
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
// 使用 TreeMap 创建 Map
Map<String, Integer> values = new TreeMap<>();
values.put("Second", 2);
values.put("First", 1);
System.out.println("TreeMap: " + values);
// 替换值
values.replace("First", 11);
values.replace("Second", 22);
System.out.println("新 Map: " + values);
// 移除元素
int removedValue = values.remove("First");
System.out.println("移除的值: " + removedValue);
}
}
输出
TreeMap: {First=1, Second=2}
新 Map: {First=11, Second=22}
移除的值: 11
更多 TreeMap 详情请访问 Java TreeMap。
java
- 掌握 C# 接口:定义、实现与实战场景全解析
- 精通 Java 运算符:类型、语法与实战示例
- 精通 Java super 关键字:高级用法与实战示例
- 精通 Java 接口:概念、实现与最佳实践
- 精通 Java Try-With-Resources:自动资源管理详解
- Java 注解详解:类型、放置位置与实战示例
- 掌握 Java NavigableSet 接口:导航、排序与实战示例
- 掌握 Java Lambda 表达式:从基础到 Stream API 实战
- Java 接口 vs 抽象类:如何选择合适的抽象方式
- Java 接口全解析:定义契约、默认方法、多实现与标记接口
- Java 9 集合工厂方法:一行代码创建不可变 List/Set/Map
- Java 9 接口私有方法:增强封装与代码复用