Java Map 详解
2025/11/30大约 1 分钟
📌 1️⃣ Map 是什么?
Map 是 键值对 key–value 的映射结构。
特点:
- key 不能重复
- value 可以重复
- key 和 value 都可以是任意对象
- 常用于快速查找、统计、缓存
简单例子:
Map<String, Integer> map = new HashMap<>();
map.put(key, value) // 添加或覆盖
map.get(key) // 获取 value
map.containsKey(key) // 是否存在 key
map.remove(key) // 删除
map.size() // 大小
map.isEmpty() // 是否为空统计数字频次、字符频次:
map.put(x, map.getOrDefault(x, 0) + 1);遍历 Map(四种写法)
最常用:entrySet()
for (Map.Entry<String, Integer> e : map.entrySet()) {
String key = e.getKey();
Integer value = e.getValue();
}只遍历 key
for (String key : map.keySet()) {
System.out.println(key);
}只遍历 value
for (Integer value : map.values()) {
System.out.println(value);
}Lambda 写法(Java 8)
map.forEach((k, v) -> {
System.out.println(k + ":" + v)
});📌 2️⃣ HashMap
① HashMap —— 无序,最快(面试最常考)
主要用于 O(1) 的快速查找
key 通过 hash 算法定位
Java 8 以后采用 数组 + 链表 + 红黑树(重点)
适合场景:统计次数、缓存、查找速度最快
常用方法与map一致;
📌 3️⃣ HashMap 底层原理(大厂重点)
(你学完基础后,我们会深入讲这个)
核心结构:
数组 + 链表 + 红黑树(哈希冲突多时)Java 8 以后:
链表长度超过 8 → 转成红黑树(提高性能)
链表长度小于 6 → 再变回链表
面试高频题包括:
哈希冲突如何解决?
为什么链表转红黑树?
扩容如何发生?(默认 16 → 32)
为什么 HashMap 线程不安全?
我之后会逐条教你。
