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

Java Set 詳解:HashSet、TreeSet 與元素唯一性契約

     編輯:Java 相關知識

Set 介面特性

  • 不允許重複元素 (以 equals() 判斷)。
  • 介面與 Collection 完全相同,行為不同 (多型典範)。
  • 不保證迭代順序 (除 TreeSet)。

三大實作對比

  • HashSet*:首選,基於雜湊表,元素須實作 hashCode(),查找極快。
  • TreeSet:紅黑樹實作,元素有序 (自然順序或 Comparator),查找 O(log n)。
  • ArraySet:極小集合專用,無需 hashCode,大量數據性能差。

自定義元素類別正確實作

class MyType implements Comparable {
    private int i;
    // 必須覆寫
    public boolean equals(Object o) { ... }
    public int hashCode() { return i; } // HashSet 必須
    public int compareTo(Object o) { ... } // TreeSet 需要
}

equals() 嚴格判斷邏輯相等,hashCode() 配合雜湊分佈,compareTo() 定義排序邏輯。兩者一致性原則:equals() 為 true 則 hashCode() 必須相等。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved