Java HashSet TreeSet LinkedHashSet 三種Set接口實現的比較

Set是Java中的一個接口。
Set有各種各樣的實現來滿足不同情況下的需求。

先來說下HashSet TreeSet 和LinkedHashSet之間的相同點。

他們都是Set 。
都是數學意義上的Set集合。
他們都無法存放相同的元素。

再來看看不同的一點。
先看看TreeSet 和HashSet的不同。
最大的不同是TreeSet是有排序的。而HashSet則是無法保證放入集合時的順序和取出時的順序是一樣的。
但是TreeSet會根據放入的元素的Comparable接口的實現方法compareTo方法來決定他們之間的排序。
那麼這個時候問題就來了。如果我向TreeSet中放入沒有實現Comparable接口的元素咋辦?
很簡單。報錯唄。

這裏寫圖片描述
再有的不同的是TreeSet的底層實現是TreeMap,而HashSet的實現是HashMap。
TreeSet用的是二叉樹的存儲結構。而HashSet則使用的是Hash表來決定的。

再有一個就是LinkedHashMap。
LinkedHashMap繼承了HashSet,所以跟HashSet是比較相似的。
但是有一個最大的不同是。
LinkedHashSet可以保證集合中取出元素的時候的順序跟放入集合的順序是一致的。但是HashSet這點保證不了。

發佈了241 篇原創文章 · 獲贊 71 · 訪問量 73萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章