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

Java 集合框架核心介面詳解:Set、SortedSet、Map 與排序機制

     編輯:Java 程式設計入門

核心介面體系

java.util.Collection 為根介面,下分 List、Set、Queue。Map 不繼承 Collection 但屬集合框架核心。

Set:不重複元素集合

  • 延伸 Collection,不允許重複元素(equals() 比較)。
  • 常用實作:HashSet(無序、O(1))、LinkedHashSet(維護插入序)、TreeSet(有序、紅黑樹、O(log n))。

SortedSet:有序 Set

  • 繼承 Set,元素依自然順序(Comparable)或指定 Comparator 排序。
  • 提供 first()、last()、headSet()、tailSet()、subSet() 等範圍操作。
  • 唯一實作:TreeSet。

Comparator:外部比較策略

  • 定義 compare(T o1, T o2) 與 equals(Object),實現自訂排序邏輯。
  • 傳遞給 TreeSet、TreeMap、Collections.sort()、Arrays.sort() 控制排序行為。
  • Java 8+ 提供靜態工廠方法:Comparator.comparing()、thenComparing()、nullsFirst() 等,支援鏈式組合。

Map:鍵值對映射

  • 鍵唯一,每鍵對應單一值。類似 Hashtable 但非同步。
  • 核心操作:put(k,v)、get(k)、remove(k)、containsKey(k)、keySet()、values()、entrySet()。
  • 常用實作:HashMap、LinkedHashMap、TreeMap(有序)、ConcurrentHashMap(執行緒安全)。

排序機制兩大路徑

  1. Collections.sort(List) / Arrays.sort(array):靜態工具方法。
    • 單參數版:元素需實作 Comparable(自然順序)。
    • 雙參數版:傳入 Comparator 實例(外部順序)。
  2. 元素內建 Comparable:類別實作 Comparable<T>,compareTo(T o) 回傳負/零/正代表小於/等於/大於。TreeSet/TreeMap 無需額外 Comparator 即可排序。

自訂比較器範例

class MySortedMapComparator implements Comparator<String> {
    @Override
    public int compare(String o1, String o2) {
        // 依字串長度排序,長度相同再按字典序
        int lenDiff = o1.length() - o2.length();
        return (lenDiff != 0) ? lenDiff : o1.compareTo(o2);
    }
}

// 使用
Set<String> set = new TreeSet<>(new MySortedMapComparator());
set.addAll(Arrays.asList("apple", "fig", "banana", "cherry", "date"));
// 輸出: fig, date, apple, cherry, banana

效能與選型速查

介面/實作有序性重複值執行緒安全典型用途
HashSet無序不允許否高效去重、成員資格測試
LinkedHashSet插入序不允許否需保留插入順序的去重
TreeSet排序序不允許否區間查詢、有序遍歷
HashMap無序Key唯一否一般鍵值查找
TreeMapKey排序Key唯一否有序鍵值、區間查詢
ConcurrentHashMap無序Key唯一是高併發 Map
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved