java之Set集合

Set

1.Set接口繼承於Collection
2.Set堆中存儲的數據是無序的(不代表亂序:內部有序,外部無序)
3.存儲的數據是不可重複的。當添加相同的元素時,只能添加一個元素
4.添加進Set中的元素一定要重寫equals和hashCode方法

1)Set中的元素存儲使用哈希算法
2)當向Set添加元素時,首先會調用該對象所造的類的哈希Code方法,計算對象的哈希值,決定了Set的位置。
3)當通過equals()比較兩個對象是否相同,同則後面不能添加

5.實現類

1)HashSet(主要實現類)
----用哈希算法存儲集合元素,因此很好的存取和查詢性能(底層實現是哈希表)
----不能保證元素的排列順序。
----內部存儲機制:HashSet集合判斷兩個元素的標準是兩個對象equals()相等,並且兩對象的HashCode也相等,確保元素的唯一性。
----爲什麼不使用數組使用HashSet??
HashSet通過哈希值確定存儲位置,可以自由增加長度,並根據哈希值訪問元素,不用挨個遍歷索引去訪問。
2)LinkedHashSet
----是HashSet的子類
----是使用鏈表維護元素順序
----輸出集合的元素時元素的順序和添加順序是一致的
3)TreeSet
----是SortedSet接口實現類
----可以確保集合元素處於排序狀態
----內部是二叉排序樹,默認從小到大排序
----採用兩種排序方法:自然排序和定製排序(默認是自然排序)

List和Set區別:(面試點)
1)都是Collection的子接口
2)List存儲有序的可重複的數據,Set存儲無序的不可重複的數據
3)底層存儲機制不同

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