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