TreeSet基于TreeMap实现,是自平衡有序的set集合
TreeSet特性
- 非线程安全的集合
- 保证迭代按照指定顺序进行迭代(排好序的方式)
- 没有任何重复元素的集合,底层通过TreeSet来实现,对TreeSet元素的操作都映射到TreeMap的key上(迭代,查找等等)。
- 基于TreeMap的统计功能,可以对Set进行统计操作
TreeSet实现原理
默认使用TreeMap作为底层的有序Map,也可以在构造函数将其指定为NavigableMap
方法列表
TreeSet的方法都是通过代理TreeMap的方法来实现的,TreeSet方法比较简单,给出方法列表
-
有方法列表可知,TreeSet并没有实现随机访问的方法,即不能通过get(int index)方法获取指定位置上的元素,可以通过iterator()方法和descendingIterator()进行迭代访问。
-
但是相对于HashSet提供了大量关于排序和统计相关的方法,如支持升序降序遍历,符合某一条件的子set集合等等。
add方法
在TreeSet集合中添加一个元素 e 相当于在TreeMap中添加一个key为e,value为Object类型引用的Entry节点。
和HashSet的add方法一模一样。
HashSet与TreeSet
相同点
- 满足set集合的所有特性
- 非线程安全
- 不支持随机访问
不同点
- HashSet不支持排序和统计相关的操作,而TreeSet支持,如降序迭代,返回满足某一条件的子集,第一个元素、最后一个元素等等。
网友评论