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這點保證不了。