Set集合

HashSet:
HashSet 底層數據結構是哈希表. HashSet 不是線程安全的 集合元素可以是 null
哈希表:是一個元素爲鏈表的數組,綜合了數組和鏈表的優點
當向 HashSet 集合中存入一個元素時,HashSet 會調用該對象的 hashCode() 方法來得到該對象的 hashCode 值,然後根hashCode 值決定該對象在 HashSet 中的存儲位置。
HashSet 集合判斷兩個元素相等的標準:
兩個對象通過 hashCode() 方法比較相等,並且兩個對象的 equals() 方法返回值也相等。
HashSet的數據結構是 數組跟鏈表
HashSet的數據結構是 數組跟鏈表和二叉樹

LinkedHashSet:
數據結構 有兩個 鏈表和哈希表

鏈表保證有序 哈希表保證元素唯一

TreeSet:
集合的特點: 元素唯一,並且可以對元素進行排序
底層的數據結構是二叉樹
    排序:
        1:自然排序
        2:使用比較器排序       
採用空參構造時,就用的是自然排序,
自然排序要求元素必須實現一個Compareble 接口 
並且重寫接口中 compareTo 這個比較的方法,根據
此方法的返回值的正負0 來決定元素放置到樹結構的
位置,以及不往裏面方法
此類實現 Set 接口,由哈希表(實際上是一個 HashMap 實例)
支持。它不保證 set 的迭代順序;特別是它不保證該順序恆久不變。
採用比較器排序:你使用有參構造,參數就會要一個比較器

使用元素的自然順序對元素進行排序,或者根據創建 set 時
提供的 Comparator 進行排序,具體取決於使用的構造方法。

此類允許使用 null 元素。

合理的重寫hashCode方法的作用:
1.確定元素節點在哈希表中的存的位置,
2,減少調用equals方法()重寫equals方法 當節點的索引相同時,去比較內容

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章