跳到主要内容

Java Map 接口

提示
  1. Map 接口概念和工作原理Map 是 Java 集合框架的一部分,以键/值对的形式存储元素,每个键唯一对应一个值。它允许使用相关联的键访问和修改值。
  2. 实现 Map 的类Map 是一个接口,由多个类实现,包括 HashMap, EnumMap, LinkedHashMap, WeakHashMap, 和 TreeMap。此外,Map 接口被 SortedMap, NavigableMap, 和 ConcurrentMap 子接口扩展。
  3. Map 接口的使用和方法:要使用 Map,需要导入 java.util.Map 包。Map 提供了多种方法,如 put(), get(), remove(), keySet(), values(), 和 entrySet(),用于操作映射中的数据。

Java 集合框架中的 Map 接口提供了映射数据结构的功能。

Map 的工作原理

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

一个映射不能包含重复的键。而且,每个键都与单个值相关联。

Java 中 Map 接口的工作原理

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

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

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

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

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

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

实现 Map 的类

由于 Map 是一个接口,我们不能直接从它创建对象。

为了使用 Map 接口的功能,我们可以使用以下类:

这些类都定义在集合框架中,并实现了 Map 接口。

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

扩展 Map 的接口

Map 接口还被以下子接口扩展:

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

如何使用 Map?

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

// 使用 HashMap 实现的 Map
Map<Key, Value> numbers = new HashMap<>();

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

这里,

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

Map 的方法

Map 接口包括了 Collection 接口的所有方法。因为 CollectionMap 的超接口。

除了 Collection 接口中的方法外,Map 接口还包括以下方法:

  • put(K, V) - 将键 K 和值 V 的关联插入映射。如果键已存在,新值将替换旧值。
  • putAll() - 将指定映射中的所有条目插入此映射。
  • putIfAbsent(K, V) - 如果键 K 尚未与值 V 相关联,则插入关联。
  • get(K) - 返回与指定键 K 相关联的值。如果未找到键,则返回 null
  • getOrDefault(K, defaultValue) - 返回与指定键 K 相关联的值。如果未找到键,则返回 defaultValue
  • containsKey(K) - 检查指定键 K 是否存在于映射中。
  • containsValue(V) - 检查指定值 V 是否存在于映射中。
  • **replace(K, V

)** - 将键 K 的值替换为新指定的值 V

  • replace(K, oldValue, newValue) - 仅当键 K 与值 oldValue 相关联时,将其值替换为新值 newValue
  • remove(K) - 从映射中移除由键 K 表示的条目。
  • remove(K, V) - 移除映射中与键 K 关联的值 V 的条目。
  • keySet() - 返回映射中所有键的集合。
  • values() - 返回映射中所有值的集合。
  • entrySet() - 返回映射中所有键/值映射的集合。

Map 接口的实现

1. 实现 HashMap 类

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

class Main {

public static void main(String[] args) {
// 使用 HashMap 创建映射
Map<String, Integer> numbers = new HashMap<>();

// 向映射中插入元素
numbers.put("One", 1);
numbers.put("Two", 2);
System.out.println("映射: " + numbers);

// 访问映射的键
System.out.println("键: " + numbers.keySet());

// 访问映射的值
System.out.println("值: " + numbers.values());

// 访问映射的条目
System.out.println("条目: " + numbers.entrySet());

// 从映射中移除元素
int value = numbers.remove("Two");
System.out.println("移除的值: " + value);
}
}

输出

映射: {One=1, Two=2}
: [One, Two]
: [1, 2]
条目: [One=1, Two=2]
移除的值: 2

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

2. 实现 TreeMap 类

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

class Main {

public static void main(String[] args) {
// 使用 TreeMap 创建映射
Map<String, Integer> values = new TreeMap<>();

// 向映射中插入元素
values.put("Second", 2);
values.put("First", 1);
System.out.println("使用 TreeMap 的映射: " + values);

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

// 从映射中移除元素
int removedValue = values.remove("First");
System.out.println("移除的值: " + removedValue);
}
}

输出

使用 TreeMap 的映射: {First=1, Second=2}
新映射: {First=11, Second=22}
移除的值: 11

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