原文: https://www.programiz.com/java-programming/map

在本教程中,我们将学习 Java Map接口及其方法。

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

它实现了Collection接口。


映射的工作原理

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

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

Java `Map`接口 - 图1

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

在上图中,我们具有以下值:AmaricaBrazilSpain。 并且我们有相应的键:usbres

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

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

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

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


实现Map的类

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

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

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

Java `Map`接口 - 图2


扩展Map的接口

Map接口还通过以下子接口扩展:

Java `Map`接口 - 图3


如何使用映射?

在 Java 中,必须导入java.util.Map包才能使用Map。 导入包后,将按照以下方法创建映射。

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

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

这里,

  • key - 用于关联映射中每个元素(值)的唯一标识符
  • value - 映射中与按键相关联的元素

映射方法

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) - 用新的指定值V替换键K的值。
  • replace(K, oldValue, newValue) - 仅当键K时,才将键K的值替换为新值newValue与值oldValue关联。
  • remove(K) - 从键K表示的映射中删除条目。
  • remove(K, V) - 从映射中删除具有与值V关联的键K的条目。
  • keySet() - 返回映射中存在的所有键的集合。
  • values() - 返回映射中存在的所有值的集合。
  • entrySet() - 返回映射中存在的所有键/值映射的集合。

Map接口的实现

1.HashMap实现类

  1. import java.util.Map;
  2. import java.util.HashMap;
  3. class Main {
  4. public static void main(String[] args) {
  5. // Creating a map using the HashMap
  6. Map<String, Integer> numbers = new HashMap<>();
  7. // Insert elements to the map
  8. numbers.put("One", 1);
  9. numbers.put("Two", 2);
  10. System.out.println("Map: " + numbers);
  11. // Access keys of the map
  12. System.out.println("Keys: " + numbers.keySet());
  13. // Access values of the map
  14. System.out.println("Values: " + numbers.values());
  15. // Access entries of the map
  16. System.out.println("Entries: " + numbers.entrySet());
  17. // Remove Elements from the map
  18. int value = numbers.remove("Two");
  19. System.out.println("Removed Value: " + value);
  20. }
  21. }

输出

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

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


2.TreeMap实现类

  1. import java.util.Map;
  2. import java.util.TreeMap;
  3. class Main {
  4. public static void main(String[] args) {
  5. // Creating Map using TreeMap
  6. Map<String, Integer> values = new TreeMap<>();
  7. // Insert elements to map
  8. values.put("Second", 2);
  9. values.put("First", 1);
  10. System.out.println("Map using TreeMap: " + values);
  11. // Replacing the values
  12. values.replace("First", 11);
  13. values.replace("Second", 22);
  14. System.out.println("New Map: " + values);
  15. // Remove elements from the map
  16. int removedValue = values.remove("First");
  17. System.out.println("Removed Value: " + removedValue);
  18. }
  19. }

输出

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

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