Java Map 与 Set 数据结构深度解析与实战对比
在 Java 开发中,处理动态数据查找时,数组往往力不从心。这时候 Map 和 Set 就成了主力。它们专为搜索设计,支持高效的插入、删除和查找操作。
一、核心概念与模型
搜索通常涉及关键字(Key)和对应的值(Value)。根据需求不同,主要有两种模型:
- 纯 Key 模型:只存储唯一的键,没有关联的值。重点在于判断元素是否存在,常用于去重或黑名单过滤。
- Key-Value 模型:键与值绑定,通过键快速定位并访问值。广泛应用于配置管理、数据库索引等场景。
简单来说,Set 只存 Key,Map 存的是 Key-Value 对。
二、Map 详解
1. 什么是 Map?
Map 是接口类,不继承 Collection,存储 <K, V> 结构的键值对。其中 Key 必须唯一,不能重复。
2. 实例化与实现类
Map 接口本身不能直接实例化,需通过实现类创建。常见的有 HashMap 和 TreeMap。
public static void main(String[] args) {
// HashMap:基于哈希表,无序,性能高
Map<String, Integer> map1 = new HashMap<>();
// TreeMap:基于红黑树,有序,可排序
Map<String, Integer> map2 = new TreeMap<>();
}
3. 常用方法概览
| 方法 | 说明 |
|---|---|
V put(K key, V value) | 设置键值对,若 Key 存在则覆盖 |
V remove(Object key) | 删除指定 Key 的映射 |
V get(Object key) | 获取 Key 对应的 Value |
V getOrDefault(Object key, V defaultValue) | 获取 Value,若 Key 不存在返回默认值 |
Set<K> keySet() | 获取所有 Key 的集合 |
Collection<V> values() | 获取所有 Value 的集合 |
Set<Map.Entry<K,V>> entrySet() |


