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()
|