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

Java Set 集合深度解析:HashSet 與 TreeSet 核心差異

     編輯:Java 相關知識

Set 集合體系概覽

Set 繼承自 Collection,特徵是不允許重複元素。AbstractSet 實作了大部分介面方法,為具體實作類提供便利。兩大主流實作:

  • HashSet:底層依賴 HashMap,元素無序,查詢效能 O(1)。
  • TreeSet:底層依賴 TreeMap,元素有序(自然順序或定制 Comparator),查詢效能 O(log n)。

遍歷範例與自定義類型注意事項

package com.sort;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class SetTest2 {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("a"); set.add("b"); set.add("c"); set.add("d"); set.add("e"); set.add("e"); // 重複自動去除

        // 方式一:迭代器
        for (Iterator<String> it = set.iterator(); it.hasNext(); ) {
            System.out.print(it.next() + " ");
        }
        System.out.println("\n********************");
        // 方式二:增強 for
        for (String v : set) System.out.print(v + " ");
    }
}

關鍵提醒:存放自定義對象時必須重寫 hashCode() 與 equals()

HashSet 判斷重複邏輯:先比 hashCode(),不同則直接加入;相同再呼叫 equals(),為 true 視為重複。若未重寫,預設比較記憶體位址,導致邏輯錯誤。請依業務關鍵欄位(如 ID)實作兩方法。

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