Java 集合框架中 Set 接口定義了不允許重複元素的集合契約。本文全面梳理四大核心實現類的特點、適用場景與核心操作,幫助開發者快速選型。
| 實現類 | 底層結構 | 順序特性 | 性能 | 適用場景 |
|---|---|---|---|---|
| HashSet | HashMap | 無序 | O(1) 最快 | 通用去重、高性能查找 |
| LinkedHashSet | LinkedHashMap | 插入順序 | O(1) | 需保持輸入順序的去重 |
| TreeSet | 紅黑樹 | 自然/自定義排序 | O(log n) | 需要有序遍歷、範圍查詢 |
| EnumSet | 位向量 | 枚舉聲明順序 | O(1) 極快 | 枚舉類型專用集合 |
Set<Object> set = new HashSet<>();
Object obj = new Object();
// 基本增刪查
set.add(obj); // 添加
set.addAll(otherSet); // 批量添加
set.remove(obj); // 刪除
set.removeAll(otherSet); // 批量刪除
set.clear(); // 清空
// 判斷操作
set.contains(obj); // 包含元素
set.containsAll(otherSet); // 包含集合
set.isEmpty(); // 是否為空
set.size(); // 大小
// 轉換操作
Object[] arr = set.toArray(); // 轉數組
String[] strArr = set.toArray(new String[0]); // 類型安全轉換
// 迭代遍歷
Iterator<Object> it = set.iterator();
while (it.hasNext()) {
Object item = it.next();
// 處理邏輯
}
// 基於哈希的集合
Set hashSet = new HashSet();
// 排序集合
Set treeSet = new TreeSet();
// 插入順序集合
Set linkedHashSet = new LinkedHashSet();
// 枚舉專用集合
Set enumSet = EnumSet.noneOf(MyEnum.class);
