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

TreeSet

  TreeSet 类与散列集十分类似, 不过, 它比散列集有所改进。树集是一个有序集合( sorted collection) 。 可以以任意顺序将元素插入到集合中。在对集合进行遍历时,每个值将自动地按照排序后的顺序呈现。
排序是用树结构完成的(当前实现使用的是红黑树)。每次将一个元素添加到数中时,都被放置在正确的排序位置上,因此,迭代器总是以排好序的顺序访问每个元素。
将一个元素添加到树中要比添加到散列表中慢 。

要使用树集 , 必须能够比较元素 。 这些元素必须实现 Comparable 接口 ,或者构造集时必须提供一个 Comparator。

是否总是应该用树集取代散列集 ? 毕竟 , 添加一个元素所花费的时间看上去并不很长, 而且元素是自动排序的 。 到底应该怎样做将取决于所要收集的数据。 如果不需要对数据进行排序 ,就没有必要付出排序的开销。更重要的是,对于某些数据来说, 对其排序要比散列函数更加困难 。 散列函数只是将对象适当地打乱存放 , 而比较却要精确地判别每个对象。
TreeSet详解

TreeMap

TreeMap底层是基于红黑树实现的(有时间细看)
Tree Map详解
红黑树详解

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