前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TreeSet源码解析

TreeSet源码解析

作者头像
吉林乌拉
发布2019-08-14 17:41:28
4390
发布2019-08-14 17:41:28
举报
文章被收录于专栏:吉林乌拉吉林乌拉

在这一篇中我们主要分享一下TreeSet集合的相关知识。在上一篇中我们介绍了HashSet集合的底层实现,并且发现HashSet底层是通过HashMap集合实现的。那么顾名思义今天我们介绍的TreeSet集合,底层就是通过TreeMap集合实现的。那么废话不多说,我们直接看TreeSet的初始化代码。

  • 初始化

初始化和HashSet一样,就是默认调用了底层实现集合的无参构造方法。也就是直接创建了TreeMap对象,并且我们通过对TreeMap集合的分析知道,此时并没有执行底层数据结构的初始化动作,这也就说明,在我们通过无参构造方法创建TreeSet对象时,是不会执行底层数据结构的初始化的。那么初始化的动作也一定是发生在第一次调用add方法时。下面我们看一下TreeSet集合中的add方法的底层实现。

HashSet中的add方法的实现逻辑基本和HashSet中的实现逻辑一样。都是直接调用了底层Map的实现类。也就是调用TreeMap中的put方法,并且将value值设置为Object。既然TreeSet底层是通过TreeMap实现的,那么我们很容易可以总结出TreeSet具有以下的特性:

总结

  • 保存在TreeSet集合中的元素,必须保证能够排序
  • TreeSet集合中不能保存null元素,否则,虚拟机会抛出异常
  • TreeSet集合是有序的集合类,但是,不能保证元素的添加顺序与遍历顺序一致
  • TreeSet集合不是线程安全的集合类,在多线程环境使用时,要添加额外的同步代码,已保证线程安全
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 吉林乌拉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档