Java Map 接口
提示
- Map 接口概念和工作原理:
Map
是 Java 集合框架的一部分,以键/值对的形式存储元素,每个键唯一对应一个值。它允许使用相关联的键访问和修改值。 - 实现 Map 的类:
Map
是一个接口,由多个类实现,包括HashMap
,EnumMap
,LinkedHashMap
,WeakHashMap
, 和TreeMap
。此外,Map
接口被SortedMap
,NavigableMap
, 和ConcurrentMap
子接口扩展。 - Map 接口的使用和方法:要使用
Map
,需要导入java.util.Map
包。Map
提供了多种方法,如put()
,get()
,remove()
,keySet()
,values()
, 和entrySet()
,用于操作映射中的数据。
Java 集合框架中的 Map
接口提供了映射数据结构的功能。
Map 的工作原理
在 Java 中,Map
的元素以键/值对的形式存储。键是与各个值相关联的唯一值。
一个映射不能包含重复的键。而且,每个键都与单个值相关联。
我们可以使用与它们相关联的键来访问和修改值。
在上图中,我们有值:United States
、Brazil
和 Spain
。相应的键是:us
、br
和 es
。
现在,我们可以使用它们相应的键来访问这些值。
注意: Map
接口维护 3 个不同的集合:
- 键的集合
- 值的集合
- 键/值关联(映射)的集合。
因此,我们可以分别访问键、值和关联。
实现 Map 的类
由于 Map
是一个接口,我们不能直接从它创建对象。
为了使用 Map
接口的功能,我们可以使用以下类:
这些类都定义在集合框架中,并实现了 Map
接口。
扩展 Map 的接口
Map
接口还被以下子接口扩展:
如何使用 Map?
在 Java 中,我们必须导入 java.util.Map
包才能使用 Map
。导入包后,我们可以这样创建一个映射。
// 使用 HashMap 实现的 Map
Map<Key, Value> numbers = new HashMap<>();
在上面的代码中,我们创建了一个名为 numbers
的 Map
。我们使用了 HashMap
类来实现 Map
接口。
这里,
Key
- 用于在映射中关联每个元素(值)的唯一标识符Value
- 映射中由键关联的元素
Map 的方法
Map
接口包括了 Collection
接口的所有方法。因为 Collection
是 Map
的超接口。
除了 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。