Java Map 接口

Java Map 接口定义了由键映射到值的数据结构的操作。在本教程中,我们将了解 Map 接口及其方法。

Java Map 接口定义了由键映射到值的数据结构的操作。在本教程中,我们将了解 Map 接口及其方法。

Map 的工作原理

在 Java 中, Map 中的元素按找 键/值对 的方式存储。通过 可以找到与之关联的

Map 不能包含重复的键,而且每个键都与一个值相关联。我们可以使键来访问和修改值。

就像在一个字典中,前面的索引就是键,我们根据索引找到关于词的详细解释就是值。

在 Java 中使用 Map 接口

在上图中,我们有 3 个键(us, br,es) 和 3 个值 (United States, Brazil, Spain),并且在建立了键和值之间的关系。

现在,我们可以使用通过键获取对应的值,比如通过 es,我们就可以找到 Spain

实现 Map 的类

Java 集合框架中提供了以下类实现了 Map 接口:

HashMap、TreeMap、EnumMap、LinkedHashMap 和 WeakHashMap 类实现了 Java Map 接口。

扩展 Map 的接口

根据不同的需求,还有几个接口扩展了 Map 接口:

SortedMap、NavigableMap 和 ConcurrentMap 扩展了 Java Map 接口

如何使用 Map ?

我们先导入 java.util.Map 类,然后通过 Map 的实现类创建对象:

Map<Key, Value> map = new HashMap<>();

在上面的代码中,我们使用 HashMap 类创建了一个名为 mapMap 对象。

这里,

  • Key - Map 中键的数据类型
  • Value - Map 中值的数据类型

Map 的方法

Map 接口中定义了很多方法用于元素操作:

  • put(K, V) - 插入一个键值对 K,V 。如果键已经存在,新值将替换旧值。
  • putAll() - 将参数指定 Map 中的所有条目插入到该 Map 中。
  • putIfAbsent(K, V) - 当键 K 对应的值为空的时候,插入新值 V,否则返回当前值。
  • get(K) - 返回与指定键 K 关联的值。如果未找到键 K,则返回 null
  • getOrDefault(K, defaultValue) - 返回与指定键 K 关联的值。如果未找到键 K,则返回默认值.
  • containsKey(K) - 检查 Map 中是否存在指定的键 K
  • containsValue(V) - 检查 Map 中是否存在指定的值 V
  • replace(K, V) - 使用新值 V 替换键 K对应的值。
  • replace(K, oldValue, newValue) - 只有当键 K对应的值与指定的值相同时,才使用新值替换。
  • remove(K) - 删除键 K 对应的条目。
  • remove(K, V) - 删除键值对 K,V 对应的条目。
  • keySet() - 返回 Map 中存在的所有键的集合。
  • values() - 返回 Map 中存在的所有值的集合。
  • entrySet() - 返回 Map 中存在的所有键/值对的集合。

Map 示例

HashMapTreeMap 是经常使用的 Map 接口实现类,下面分别以这两个类为例展示 Map 的用法。

示例:HashMap

import java.util.Map;
import java.util.HashMap;

public class Main {

  public static void main(String[] args) {
    Map<String, Integer> numbers = new HashMap<>();

    // 插入
    numbers.put("One", 1);
    numbers.put("Two", 2);
    System.out.println("Map: " + numbers);

    // 所有键的集合
    System.out.println("Keys: " + numbers.keySet());

    // 所有值的集合
    System.out.println("Values: " + numbers.values());

    // 所有键值对的集合
    System.out.println("Entries: " + numbers.entrySet());

    // 根据键删除条目
    int value = numbers.remove("Two");
    System.out.println("Removed Value: " + value);
  }
}

输出

Map: {One=1, Two=2}
Keys: [One, Two]
Values: [1, 2]
Entries: [One=1, Two=2]
Removed Value: 2

要了解有关 HashMap 的更多信息,请访问 Java HashMap 类

示例:TreeMap

import java.util.Map;
import java.util.TreeMap;

public class Main {

  public static void main(String[] args) {
    Map<String, Integer> values = new TreeMap<>();

    // 插入
    values.put("Second", 2);
    values.put("First", 1);
    System.out.println("Map using TreeMap: " + values);

    // 替换值
    values.replace("First", 11);
    values.replace("Second", 22);
    System.out.println("New Map: " + values);

    // 删除指定的键
    int removedValue = values.remove("First");
    System.out.println("Removed Value: " + removedValue);
  }
}

输出

Map using TreeMap: {First=1, Second=2}
New Map: {First=11, Second=22}
Removed Value: 11

要了解有关 TreeMap 的更多信息,请访问 Java TreeMap 类