HashSet 基本操作

HashSet 基于哈希表实现,添加、删除、查询的时间复杂度都是 O(1)。元素无序,不重复。

HashSet 示例
import java.util.HashSet;
import java.util.Set;

Set<String> cities = new HashSet<>();

// 添加元素
cities.add("北京");
cities.add("上海");
cities.add("广州");
cities.add("北京");  // 重复元素,不会被添加

System.out.println("城市数量: " + cities.size());  // 输出 3

// 遍历 Set
for (String city : cities) {
    System.out.println(city);  // 顺序不固定
}

// 判断是否存在
boolean hasBeijing = cities.contains("北京");  // true
✅ HashSet 特点

1. 不允许重复:依赖 equals() 和 hashCode() 判断重复
2. 无序:不保证插入顺序
3. 查询快:O(1) 时间复杂度
4. 允许 null 元素(只能有一个)

课后练习

以下代码的输出是什么?

代码片段
Set set = new HashSet<>();
set.add("A");
set.add("B");
set.add("A");
System.out.println(set.size());
A 3
B 1
C 2
D 编译错误