TreeSet基于TreeMap實現(xiàn),是自平衡有序的set集合
TreeSet特性
- 非線程安全的集合
- 保證迭代按照指定順序進行迭代(排好序的方式)
- 沒有任何重復元素的集合,底層通過TreeSet來實現(xiàn),對TreeSet元素的操作都映射到TreeMap的key上(迭代,查找等等)。
- 基于TreeMap的統(tǒng)計功能,可以對Set進行統(tǒng)計操作
TreeSet實現(xiàn)原理
默認使用TreeMap作為底層的有序Map,也可以在構造函數(shù)將其指定為NavigableMap
方法列表
TreeSet的方法都是通過代理TreeMap的方法來實現(xiàn)的,TreeSet方法比較簡單,給出方法列表
有方法列表可知,TreeSet并沒有實現(xiàn)隨機訪問的方法,即不能通過get(int index)方法獲取指定位置上的元素,可以通過iterator()方法和descendingIterator()進行迭代訪問。
但是相對于HashSet提供了大量關于排序和統(tǒng)計相關的方法,如支持升序降序遍歷,符合某一條件的子set集合等等。
add方法
在TreeSet集合中添加一個元素 e 相當于在TreeMap中添加一個key為e,value為Object類型引用的Entry節(jié)點。
和HashSet的add方法一模一樣。
HashSet與TreeSet
相同點
- 滿足set集合的所有特性
- 非線程安全
- 不支持隨機訪問
不同點
- HashSet不支持排序和統(tǒng)計相關的操作,而TreeSet支持,如降序迭代,返回滿足某一條件的子集,第一個元素、最后一個元素等等。



