美文网首页
集合15-TreeSet源码简析

集合15-TreeSet源码简析

作者: zhanglbjames | 来源:发表于2017-06-09 20:58 被阅读0次

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支持,如降序迭代,返回满足某一条件的子集,第一个元素、最后一个元素等等。

相关文章

  • 集合15-TreeSet源码简析

    TreeSet基于TreeMap实现,是自平衡有序的set集合 TreeSet特性 非线程安全的集合 保证迭代按照...

  • mybatis-spring解析

    1、概述 原生Mybatis源码简析(上)原生Mybatis源码简析(下)在介绍原生Mybatis源码简析文章中,...

  • 集合14-HashSet源码简析

    基于HashMap实现的Set HashSet特性 非线程安全的集合 不保元素的任何顺序,元素允许为null 没有...

  • Flink自定义StreamOperator

    在上一篇StreamOperator源码简析从源码角度分析了StreamOperator以及其实现类,此篇幅主要分...

  • OkHttp源码简析

    Android平台有很多优秀的开源库,OkHttp绝对是其中的佼佼者,它是Square出品的一个网络通讯库,功能强...

  • HashMap源码简析

    说到HashMap相信大家并不陌生,这是一个非常常用的以键值对形式存储的数据结构,但是对其内部原理可能不是很了解,...

  • Handler源码简析

    消息------Message 消息的复用:Message.obtain() public static M...

  • Mask源码简析

    版本 源码版本:2017.3.0 着色器版本:2017.3.0 Mask使用方法 https://jingyan....

  • Wax源码简析

    阅读的是阿里维护的Wax版本 先针对如下用法的实现过程进行讲解。 用法 用法讲解 详细的Wax用法讲解,请参阅ht...

  • Mybatis源码简析

    本文将按mybatis中主要数据库查询操作的流程对其源码进行简单分析。目录如下: 1、mybatis的主要工作流程...

网友评论

      本文标题:集合15-TreeSet源码简析

      本文链接:https://www.haomeiwen.com/subject/pzhnfxtx.html