1. 程式人生 > 實用技巧 >第十二章、Set集合(續)

第十二章、Set集合(續)

Set集合

Set集合是用於無序儲存不可重複的元素集合。
 
 
Set集合的實現類:
    HashSet
    LinkedHashSet
    TreeSet
 
 
(1)HashSet
    HashSet是基於雜湊表的Set集合
 
    1.需要使用hashCode演算法計算元素的hash值
    2.基於雜湊表做實現
    3.實現了Set介面
 
 
HashSet集合儲存步驟:
    1.使用雜湊演算法計算元素對應的雜湊值,使用此雜湊值作為地址儲存
    2.判斷此雜湊值對應的位置上是否已經存有元素
    3.若沒有就將元素儲存在該位置上
    4.若有則使用equals方法判斷兩個物件是否相等,相等就不儲存,不相等則與上一個元素存在一起
 
 
(2)LinkedHashSet
        是基於雙向連結串列和雜湊表、繼承自HashSet的Set集合。
 
        特點:有序、不可重複
 
 
(3)TreeSet
    是基於紅黑樹,實現了Set集合,具有排序功能的Set集合。

排序介面

Comparable介面
    使實現類自身具備某種比較規則以便對其物件進行自然排序的介面。
 
自然排序:是要求自自定義類實現Comparable介面並重寫其compareTo(T o) 方法,在此方法中依據xx屬性進行排序的演算法。
 
 
Comparator比較器
    在外部自定義比較規則以便容器對其儲存資料進行定製排序的物件。
    定製排序:是要求自定義類實現Comparator介面並重寫其compare(T o1, T o2) 方法,在此方法中依據xx屬性
    進行排序的演算法,也稱為比較器排序。
 
 
 
Comparable介面
    實現該介面的類具有排序功能
    需要重寫compareTo方法,使用當前物件和引數物件進行比較
 
Comparator介面
    不會對集合中儲存的元素進行修飾
    需要自定義比較器類實現該介面,重寫compare方法,比較兩個引數物件
    需要將比較器物件以引數形式傳入集合的構造器中

集合選擇

List
    如果需要保留儲存順序並保留重複的元素,推薦使用List集合
 
        ArrayList:若查詢較多,推薦使用
        LinkedList:若存取較多,推薦使用
        Vector:若需要執行緒安全,推薦使用
 
 
Set
    如果不需要保留儲存順序並需要去除重複的元素,推薦使用Set集合
    TreeSet:若需要將元素進行排序,推薦使用
    HashSet:如果不要使用排序,使用HashSet,HashSet比TreeSet效率高
    LinkedHashSet:若選喲保留儲存順序,又需要去除重複的元素,推薦使用