集合(4)Set和Map——TreeSet和TreeMap

TreeSet

  TreeSet 類與散列集十分類似, 不過, 它比散列集有所改進。樹集是一個有序集合( sorted collection) 。 可以以任意順序將元素插入到集合中。在對集合進行遍歷時,每個值將自動地按照排序後的順序呈現。
排序是用樹結構完成的(當前實現使用的是紅黑樹)。每次將一個元素添加到數中時,都被放置在正確的排序位置上,因此,迭代器總是以排好序的順序訪問每個元素。
將一個元素添加到樹中要比添加到散列表中慢 。

要使用樹集 , 必須能夠比較元素 。 這些元素必須實現 Comparable 接口 ,或者構造集時必須提供一個 Comparator。

是否總是應該用樹集取代散列集 ? 畢竟 , 添加一個元素所花費的時間看上去並不很長, 而且元素是自動排序的 。 到底應該怎樣做將取決於所要收集的數據。 如果不需要對數據進行排序 ,就沒有必要付出排序的開銷。更重要的是,對於某些數據來說, 對其排序要比散列函數更加困難 。 散列函數只是將對象適當地打亂存放 , 而比較卻要精確地判別每個對象。
TreeSet詳解

TreeMap

TreeMap底層是基於紅黑樹實現的(有時間細看)
Tree Map詳解
紅黑樹詳解

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