# Java 初学者的`Map`集合教程

> 原文： [https://javabeginnerstutorial.com/core-java-tutorial/map-collection-tutorial-for-java-beginners/](https://javabeginnerstutorial.com/core-java-tutorial/map-collection-tutorial-for-java-beginners/)

`Map`是 Java 集合框架下的一个接口。

# `Map`接口的主要特征

*   它是一个用于将键映射到值的对象。
*   映射不能包含重复值。
*   每个键最多可以映射到一个值。
*   该接口替代了`Dictionary`类，后者是一个抽象类，而不是接口。
*   `Map`接口允许 3 个集合视图
    *   键集
    *   值集
    *   键值映射集
*   由于`Map`如上所述提供了 3 个视图，因此您可以迭代键，值或键值对。
*   可以在迭代过程中以安全的方式从`Map`中删除条目。
*   不允许映射包含自身作为键。
*   映射可以包含自身作为值。
*   一些映射实现可以包含的键和值有一些限制。
*   尝试插入不合格的键或值将引发非受检异常。

# 具体映射实现

*   `HashMap` 
*   `HashTable` 
*   `EnumMap` 
*   `IdentityHashMap` 
*   `LinkedHashMap` 
*   `Properties` 
*   `TreeMap` 
*   `WeakHashMap` 
*   `ConcurrentSkipListMap` 
*   `ConcurrentHashMap` 

# `Map`接口中的重要方法

*   **`put(K key, V value)`**：使用指定的键将指定的值放入映射中。
*   **`putAll(Map<? extends K, ? extends V> m)`**：将所有映射从给定`Map`复制到此`Map`。
*   **`keySet()`**：返回包含此映射中的**键集**。
*   **`values()`**：返回一个**集合**，其中包含此`Map`中的所有值。
*   **`isEmpty()`**：检查给定`Map`中是否有任何元素。
*   **`remove(Object key)`**：从此映射中删除键的映射（如果存在）。
*   **`containsKey(Object key)`**：检查指定键是否存在任何映射。
*   **`containsValue(Object value)`**：检查是否存在用于指定对象的任何映射（可能不止一个）。
*   **`get(Object key)`**：返回与此键关联的值。
*   **`clear() `**：用于从给定映射中移除所有映射。