Java Map 接口

Map 接口的 Java collections framework 提供了 map 数据结构的功能。


Map 的工作原理

在 Java 中,Map 的元素以键/值对的形式存储。是与单个关联的唯一值。

Map 不能包含重复键。并且,每个键都与单个值相关联。

Working of the map interface in Java

我们可以使用与之关联的键来访问和修改值。

在上图中,我们有值:United StatesBrazilSpain。我们还有对应的键:usbres

现在,我们可以使用它们各自的键来访问这些值。

注意:Map 接口维护 3 个不同的集合

  • 键的集合
  • 值的集合
  • 键/值关联(映射)的集合。

因此,我们可以单独访问键、值和关联。


实现 Map 的类

由于 Map 是一个接口,我们无法从中创建对象

为了使用 Map 接口的功能,我们可以使用这些

这些类定义在 collections framework 中,并在 Map 接口中实现。

Java Map Subclasses
Java Map 子类

扩展 Map 的接口

Map 接口还由这些子接口扩展

Java Map Subinterfaces
Java Map 子接口

如何使用 Map?

在 Java 中,我们必须导入 java.util.Map 包才能使用 Map。导入包后,我们可以这样创建 map。

// Map implementation using HashMap
Map<Key, Value> numbers = new HashMap<>();

在上面的代码中,我们创建了一个名为 numbersMap。我们使用 HashMap 类来实现 Map 接口。

这里,

  • Key - 用于将 map 中的每个元素(值)关联起来的唯一标识符
  • Value - 由键在 map 中关联的元素

Map 的方法

Map 接口包含以下方法

  • put(K, V) - 将键 K 和值 V 的关联插入到 map 中。如果键已存在,新值将替换旧值。
  • putAll() - 将指定 map 中的所有条目插入到此 map 中。
  • putIfAbsent(K, V) - 如果键 K 尚未与值 V 关联,则插入关联。
  • get(K) - 返回与指定键 K 关联的值。如果找不到键,则返回 null
  • getOrDefault(K, defaultValue) - 返回与指定键 K 关联的值。如果找不到键,则返回 defaultValue
  • containsKey(K) - 检查 map 中是否存在指定的键 K
  • containsValue(V) - 检查 map 中是否存在指定的值 V
  • replace(K, V) - 将键 K 的值替换为新的指定值 V
  • replace(K, oldValue, newValue) - 仅当键 K 与值 oldValue 关联时,才将键 K 的值替换为新值 newValue
  • remove(K) - 从 map 中移除由键 K 表示的条目。
  • remove(K, V) - 从 map 中移除键为 K 且值为 V 的条目。
  • keySet() - 返回 map 中所有键的集合。
  • values() - 返回 map 中所有值的集合。
  • entrySet() - 返回 map 中所有键/值映射的集合。

Map 接口的实现

1. 实现 HashMap 类

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

class Main {

    public static void main(String[] args) {
        // Creating a map using the HashMap
        Map<String, Integer> numbers = new HashMap<>();

        // Insert elements to the map
        numbers.put("One", 1);
        numbers.put("Two", 2);
        System.out.println("Map: " + numbers);

        // Access keys of the map
        System.out.println("Keys: " + numbers.keySet());

        // Access values of the map
        System.out.println("Values: " + numbers.values());

        // Access entries of the map
        System.out.println("Entries: " + numbers.entrySet());

        // Remove Elements from the map
        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


2. 实现 TreeMap 类

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

class Main {

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

        // Insert elements to map
        values.put("Second", 2);
        values.put("First", 1);
        System.out.println("Map using TreeMap: " + values);

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

        // Remove elements from the map
        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
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战