# 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() `**:用于从给定映射中移除所有映射。