集合15-TreeSet源码简析

TreeSet基于TreeMap实现,是自平衡有序的set集合


TreeSet特性

  1. 非线程安全的集合
  2. 保证迭代按照指定顺序进行迭代(排好序的方式)
  3. 没有任何重复元素的集合,底层通过TreeSet来实现,对TreeSet元素的操作都映射到TreeMap的key上(迭代,查找等等)。
  4. 基于TreeMap的统计功能,可以对Set进行统计操作

TreeSet实现原理

默认使用TreeMap作为底层的有序Map,也可以在构造函数将其指定为NavigableMap

方法列表

TreeSet的方法都是通过代理TreeMap的方法来实现的,TreeSet方法比较简单,给出方法列表

  1. 有方法列表可知,TreeSet并没有实现随机访问的方法,即不能通过get(int index)方法获取指定位置上的元素,可以通过iterator()方法和descendingIterator()进行迭代访问。

  2. 但是相对于HashSet提供了大量关于排序和统计相关的方法,如支持升序降序遍历符合某一条件的子set集合等等。

add方法


在TreeSet集合中添加一个元素 e 相当于在TreeMap中添加一个key为e,value为Object类型引用的Entry节点。

和HashSet的add方法一模一样。

HashSet与TreeSet

相同点

  1. 满足set集合的所有特性
  1. 非线程安全
  2. 不支持随机访问

不同点

  1. HashSet不支持排序和统计相关的操作,而TreeSet支持,如降序迭代,返回满足某一条件的子集,第一个元素、最后一个元素等等。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 以下是《疯狂Java讲义》中的一些知识,如有错误,烦请指正。 集合概述 Java集合可以分为Set、List、Ma...
    hainingwyx阅读 3,707评论 0 1
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,736评论 18 399
  • 3.3 集合 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。另...
    闫子扬阅读 4,125评论 0 1
  • Collection ├List │├LinkedList │├ArrayList │└Vector │└Stac...
    AndyZX阅读 4,413评论 0 1
  • 很多时候, 我们总是活给别人看, 也在盯着别人怎么活。 不断地揣摩着别人的想法, 照顾着别人的情绪。 于是乎, 我...
    114号别墅阅读 1,819评论 0 0

友情链接更多精彩内容