在 Java 集合框架中,Map
接口是一个非常重要的接口,用于存储键值对 (key-value pairs)。本文将详细探讨 Map
接口及其两个主要实现类:HashMap
和 TreeMap
。
Map 接口概述
Map
接口与 Collection
接口不同,Map
用于存储键值对,并且每个键只能映射到一个值。Map
接口的方法包括:
V put(K key, V value)
: 将指定的值与该键关联(如果该键之前有值,则会覆盖原值)。V get(Object key)
: 返回指定键所映射的值,如果没有映射关系则返回null
。V remove(Object key)
: 移除键及其对应的值。boolean containsKey(Object key)
: 如果该映射包含指定键的映射关系,则返回true
。boolean containsValue(Object value)
: 如果该映射将一个或多个键映射到指定值,则返回true
。Set<K> keySet()
: 返回所有键的集合。Collection<V> values()
: 返回所有值的集合。Set<Map.Entry<K, V>> entrySet()
: 返回所有键值对的集合。
HashMap
HashMap
是 Map
接口的一个常见实现类,基于哈希表实现。它具有以下特点:
- 无序性:
HashMap
不保证键值对的顺序,这意味着键值对的迭代顺序可能与插入顺序不同。 - 哈希表:
HashMap
使用哈希表来存储键值对,因此插入、删除和查找操作的时间复杂度为 O(1)。 - 键的唯一性:
HashMap
使用键的hashCode()
和equals()
方法来确保键的唯一性。
使用示例
import java.util.HashMap;
import java.util.Map;
public class HashMapExample {
public static void main(String[] args) {
Map<String, Integer> hashMap = new HashMap<>();
// 添加键值对
hashMap.put