🔌 Map接口的定义
Map 接口是 Java 集合框架中的一部分,用于存储键值对(key-value)的映射关系。Map 中的键是唯一的,而值可以重复。
✨ Map集合的特点
- 键值对存储:
- 每个元素由一个键(
key)和一个值(value)组成。 - 键必须唯一,但值可以重复。
- 键的唯一性:
- 键的唯一性是通过调用键的
hashCode() 和 equals() 方法来保证的。
- 允许的值:
- 键和值都可以为
null,但实现类的行为可能不同:HashMap:允许一个 null 键和多个 null 值。TreeMap:不允许 null 键。Hashtable:不允许 null 键或 null 值。
- 无序或有序:
HashMap 是无序的。LinkedHashMap 按插入顺序或访问顺序存储。TreeMap 按键的自然顺序或自定义排序存储。
- 线程安全性:
HashMap 和 TreeMap 是非线程安全的。Hashtable 和 ConcurrentHashMap 是线程安全的。
📦 Map接口的实现类
HashMap:- 基于哈希表实现,允许一个
null 键和多个 null 值。 - 无序。
LinkedHashMap:TreeMap:Hashtable:ConcurrentHashMap:
⚙️ Map 接口常用方法
➕ 添加键值对
- 添加或更新键值对。如果键已存在,返回旧值;否则返回
null。
1
| default V putIfAbsent(K key, V value)
|
🔍 获取值
1
| default V getOrDefault(Object key, V defaultValue)
|
- 如果键存在,返回对应的值;否则返回
defaultValue。
❌ 删除键值对
- 移除指定键的键值对,返回被移除的值。如果键不存在,返回
null。
1
| default boolean remove(Object key, Object value)
|
🔎 检查键值对
1
| boolean containsKey(Object key)
|
1
| boolean containsValue(Object value)
|
🔄 替换键值对
1
| default boolean replace(K key, V oldValue, V newValue)
|
- 如果键的当前值等于
oldValue,则替换为 newValue。
1
| default V replace(K key, V value)
|
📂 集合视图
1
| Set<Map.Entry<K, V>> entrySet()
|