集合15-TreeSet源碼簡析

TreeSet基于TreeMap實現(xiàn),是自平衡有序的set集合


TreeSet特性

  1. 非線程安全的集合
  2. 保證迭代按照指定順序進行迭代(排好序的方式)
  3. 沒有任何重復元素的集合,底層通過TreeSet來實現(xiàn),對TreeSet元素的操作都映射到TreeMap的key上(迭代,查找等等)。
  4. 基于TreeMap的統(tǒng)計功能,可以對Set進行統(tǒng)計操作

TreeSet實現(xiàn)原理

默認使用TreeMap作為底層的有序Map,也可以在構造函數(shù)將其指定為NavigableMap

方法列表

TreeSet的方法都是通過代理TreeMap的方法來實現(xiàn)的,TreeSet方法比較簡單,給出方法列表

  1. 有方法列表可知,TreeSet并沒有實現(xiàn)隨機訪問的方法,即不能通過get(int index)方法獲取指定位置上的元素,可以通過iterator()方法和descendingIterator()進行迭代訪問。

  2. 但是相對于HashSet提供了大量關于排序和統(tǒng)計相關的方法,如支持升序降序遍歷,符合某一條件的子set集合等等。

add方法


在TreeSet集合中添加一個元素 e 相當于在TreeMap中添加一個key為e,value為Object類型引用的Entry節(jié)點。

和HashSet的add方法一模一樣。

HashSet與TreeSet

相同點

  1. 滿足set集合的所有特性
  1. 非線程安全
  2. 不支持隨機訪問

不同點

  1. HashSet不支持排序和統(tǒng)計相關的操作,而TreeSet支持,如降序迭代,返回滿足某一條件的子集,第一個元素、最后一個元素等等。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 以下是《瘋狂Java講義》中的一些知識,如有錯誤,煩請指正。 集合概述 Java集合可以分為Set、List、Ma...
    hainingwyx閱讀 662評論 0 1
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,839評論 18 399
  • 3.3 集合 一方面, 面向對象語言對事物的體現(xiàn)都是以對象的形式,為了方便對多個對象的操作,就要對對象進行存儲。另...
    閆子揚閱讀 849評論 0 1
  • Collection ├List │├LinkedList │├ArrayList │└Vector │└Stac...
    AndyZX閱讀 967評論 0 1
  • 很多時候, 我們總是活給別人看, 也在盯著別人怎么活。 不斷地揣摩著別人的想法, 照顧著別人的情緒。 于是乎, 我...
    114號別墅閱讀 288評論 0 0

友情鏈接更多精彩內容