Java Map 接口
Java Map 接口定义了由键映射到值的数据结构的操作。在本教程中,我们将了解 Map 接口及其方法。
Java Map 接口定义了由键映射到值的数据结构的操作。在本教程中,我们将了解 Map 接口及其方法。
Map 的工作原理
在 Java 中, Map
中的元素按找 键/值对 的方式存储。通过 键 可以找到与之关联的 值。
Map 不能包含重复的键,而且每个键都与一个值相关联。我们可以使键来访问和修改值。
就像在一个字典中,前面的索引就是键,我们根据索引找到关于词的详细解释就是值。
在上图中,我们有 3 个键(us
, br
,es
) 和 3 个值 (United States
, Brazil
, Spain
),并且在建立了键和值之间的关系。
现在,我们可以使用通过键获取对应的值,比如通过 es
,我们就可以找到 Spain
。
实现 Map 的类
Java 集合框架中提供了以下类实现了 Map
接口:
扩展 Map 的接口
根据不同的需求,还有几个接口扩展了 Map
接口:
如何使用 Map ?
我们先导入 java.util.Map
类,然后通过 Map
的实现类创建对象:
Map<Key, Value> map = new HashMap<>();
在上面的代码中,我们使用 HashMap
类创建了一个名为 map
的 Map
对象。
这里,
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 示例
HashMap
和 TreeMap
是经常使用的 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 类。