集合---- Set (1)

集合分爲兩大類:單值集合和鍵值對。
其中單值集合分爲Set和List 。 鍵值對則爲Map。
Set的特性爲不可重複,無序。List的特性爲可重複,有序。
1.Set有HsahSet,TreeSet等分支,兩者都是不可重複的,爲了確保無重複數據,在存入時,HashSet和TreeSet都會先使用HashCode來查看兩者是否有相同哈希值,如果哈希值相等,則使用Equals方法比較。這樣的方法可以大大節約時間和計算機工作量,我們可以重寫HashCode和Equals方法來規定我們自己的重複法則,當符合這個規則時,新存入的數據將不會被存儲。

對於自己定義的種類,equals繼承自Object,也就是==;當存入字符串類型時,會逐字比較。所以當存入自定義對象時,最好重寫Equals方法。

而TreeSet則是按一定規則排序的HashSet,TreeSet也會通過HashCode和equals方法確保無重複值。TreeSet相較於HashSet多實現了SortedSet接口,具有排序功能,當存放自定義類型時,此自定義類一定要實現Comparable接口,重寫其中的compareTo方法,來定義自定義類的比較規則,存放順序。這樣才能存放在TreeSet中,且完成排序功能。

HashSet實際上是一個 HashMap 實例,允許使用 null 元素。

 public HashSet() {
        map = new HashMap<>();
    }

TreeSet基於 TreeMap 的 實現。

public TreeSet() {
        this(new TreeMap<E,Object>());
    }
發佈了26 篇原創文章 · 獲贊 3 · 訪問量 3917
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章