首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 進階教程(一):Set 集合體系全景解析

     編輯:Java 相關知識

Java 集合框架中 Set 接口定義了不允許重複元素的集合契約。本文全面梳理四大核心實現類的特點、適用場景與核心操作,幫助開發者快速選型。

四大實現類對比

實現類底層結構順序特性性能適用場景
HashSetHashMap無序O(1) 最快通用去重、高性能查找
LinkedHashSetLinkedHashMap插入順序O(1)需保持輸入順序的去重
TreeSet紅黑樹自然/自定義排序O(log n)需要有序遍歷、範圍查詢
EnumSet位向量枚舉聲明順序O(1) 極快枚舉類型專用集合

核心 API 操作指南

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);

選型決策樹

  1. 元素是枚舉類型?→ EnumSet
  2. 需要排序/範圍查詢?→ TreeSet
  3. 需要保持插入順序?→ LinkedHashSet
  4. 純粹去重、追求極致性能?→ HashSet

注意事項

  • 所有 Set 實現最多允許一個 null(TreeSet 不允許)
  • 判斷重複邏輯由具體實現決定(HashSet 用 hashCode+equals,TreeSet 用 compareTo/compare)
  • 集合修改時迭代器會快速失效拋出 ConcurrentModificationException
Set 集合體系圖
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved