Java 中 Map 和 Set 的练习
在 Java 中,Map
和 Set
是两个非常重要的数据结构,分别用于存储键值对和无重复元素的集合。下面是一些关于它们的练习,帮助你理解和使用这些数据结构。
Map 练习
创建和初始化 Map
- 使用
HashMap
创建一个存储学生姓名和学号的 Map。 - 使用
put
方法向 Map 中添加几个学生记录。
- 使用
遍历 Map
- 使用
entrySet
遍历 Map,打印出每个学生的姓名和学号。 - 使用
keySet
和values
分别遍历并打印所有学生的姓名和所有学号。
- 使用
查找元素
- 编写一个方法,根据学号查找学生姓名。
- 编写一个方法,检查某学生是否存在于 Map 中。
删除元素
- 从 Map 中删除某个特定学号的记录。
- 请确保在删除前后打印 Map 的内容以验证操作。
统计操作
- 计算 Map 中学生记录的总数。
Set 练习
创建和初始化 Set
- 使用
HashSet
创建一个存储整数的集合。 - 向 Set 中添加一些整数,包括重复值,观察 Set 的行为。
- 使用
遍历 Set
- 使用增强型
for
循环和迭代器分别遍历 Set。
- 使用增强型
查找元素
- 编写一个方法,检查某个整数是否存在于 Set 中。
删除元素
- 从 Set 中移除一个特定的整数。
- 打印 Set,验证删除操作。
集合运算
- 创建两个整数 Set,使用各种集合操作(比如并集、交集和差集)。
- 打印结果,理解 Set 对于这些操作的支持。
对比两种 Set 实现
- 对比
HashSet
和TreeSet
的行为,特别是排序和性能方面的不同。
- 对比
练习示例代码
import java.util.*;
public class MapAndSetPractice {
public static void main(String[] args) {
// Map 练习
Map<String, Integer> studentMap = new HashMap<>();
studentMap.put("Alice", 101);
studentMap.put("Bob", 102);
studentMap.put("Charlie", 103);
// 遍历Map
for (Map.Entry<String, Integer> entry : studentMap.entrySet()) {
System.out.println("Name: " + entry.getKey() + ", ID: " + entry.getValue());
}
// 查找特定学生
String studentName = findStudentNameById(studentMap, 102);
System.out.println("Student with ID 102: " + studentName);
// Set 练习
Set<Integer> numbers = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5, 5, 6));
// 遍历 Set
for (int number : numbers) {
System.out.println("Set contains: " + number);
}
// 检查特定整数
boolean contains = numbers.contains(4);
System.out.println("Set contains 4: " + contains);
// 集合运算
Set<Integer> anotherSet = new HashSet<>(Arrays.asList(4, 5, 6, 7, 8));
Set<Integer> union = new HashSet<>(numbers);
union.addAll(anotherSet);
System.out.println("Union: " + union);
Set<Integer> intersection = new HashSet<>(numbers);
intersection.retainAll(anotherSet);
System.out.println("Intersection: " + intersection);
Set<Integer> difference = new HashSet<>(numbers);
difference.removeAll(anotherSet);
System.out.println("Difference: " + difference);
}
public static String findStudentNameById(Map<String, Integer> map, int id) {
for (Map.Entry<String, Integer> entry : map.entrySet()) {
if (entry.getValue() == id) {
return entry.getKey();
}
}
return null;
}
}
通过这些练习,你将更好地理解如何使用 Java 中的 Map
和 Set
执行常见操作。探索它们的不同实现方式,比如 HashMap
、TreeMap
、HashSet
和 TreeSet
,以便选择更适合你的应用场景的实现。