跳转到主要内容
模块 6 · 第 1 课(共 2)课程中的11/14~15 min
模块课程(1/2)

设置和地图

除了 ArrayList 类(表示元素的有序列表)之外,Java 集合框架还提供了另外两个基本接口:Set(用于唯一元素)和 Map(用于键值关联)。

套装:独特元素的集合

Set 是一个不能包含重复元素的集合。它最常见的实现是 HashSet,内部基于哈希表,保证插入、删除和存在验证操作的出色性能。

Java
import java.util.HashSet;
import java.util.Set;

Set<String> uniqueNames = new HashSet<>();
uniqueNames.add("Alice");
uniqueNames.add("Bob");
uniqueNames.add("Alice"); // This insertion will be ignored since "Alice" is already present

System.out.println(uniqueNames.size()); // Prints 2

地图:键值关联

Map 将唯一的键映射到值。它不能包含重复的键:每个键最多与一个值关联。它的标准实现是HashMap。

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

Map<String, Integer> ageMap = new HashMap<>();
// Insert or update key-value pairs
ageMap.put("Alice", 25);
ageMap.put("Bob", 30);

// Retrieve value by key
int aliceAge = ageMap.get("Alice"); // Returns 25

// Verify if a key or value exists
boolean hasBob = ageMap.containsKey("Bob"); // Returns true

迭代 Map

要迭代键值对,我们可以在映射提供的条目集 (entrySet()) 上使用 for-each 循环。

Java
for (Map.Entry<String, Integer> entry : ageMap.entrySet()) {
    System.out.println(entry.getKey() + " is " + entry.getValue() + " years old.");
}

自己尝试一下

锻炼#java.m6.l1.e1
尝试:0加载中...

通过声明名为 items 的字符串 HashSet 来完成代码。再次添加元素“apple”、“banana”和“apple”,然后使用 System.out.println 打印集合的大小。

正在加载编辑器...
显示提示

请记住,“Set”中不允许有重复项,并且“items.size()”将返回插入的唯一元素的实际数量。

3 次尝试后可用的解决方案

锻炼#java.m6.l1.e2
尝试:0加载中...

通过使用 String 键和 Integer 值声明一个名为ages 的 HashMap 来完成代码。将键“Alice”与 25 关联,将键“Bob”与 30 关联,然后检索并打印 Bob 的年龄。

正在加载编辑器...
显示提示

使用“put”方法插入对,使用“get”方法根据键检索值。

3 次尝试后可用的解决方案

锻炼#java.m6.l1.e3
尝试:0加载中...

通过检查国家地图是否包含键“FR”来完成代码并打印布尔结果。

正在加载编辑器...
显示提示

使用“countries”对象上的“containsKey”方法来检查是否存在所需的密钥。

3 次尝试后可用的解决方案