当前位置:网站首页>一起学习集合框架之 TreeSet
一起学习集合框架之 TreeSet
2022-08-08 10:44:00 【51CTO】
什么是 TreeSet
TreeSet 是一个具有唯一元素的二叉树的集合,又被翻译为 树集。Java 中的 TreeSet 类是 Java 集合框架的一部分,从 Java 6 开始,它实现了 NavigableSet 接口(这个接口增加了几个查找元素以及反向遍历的便利方法),从而扩展了 SortedSet 集合。

TreeSet 类与散列类十分相似,不过,它比普通的集合有所改进,树集是一个有序集合(sorted collection),该数据结构的元素按自然顺序排序。
-
SortedSet 接口提供了保持元素排序的功能。 -
Navigableset 接口提供了可以通过SortedSet检索的功能。例如,找到该元素大于或小于给定元素,找到排序集中的第一个和最后一个元素。
接口 API

我们来看看 TreeSet 的接口:
TreeSet()
TreeSet(Comparator<? super E> comparator)
TreeSet(Collection<? extends E> c)
TreeSet(SortedSet<E> s)
其他方法
其他方法,可以读者自行研究,如下:

因为实现了 SortedSet 接口,因此具有:
Comparator<? super E> comparator()、-
E first() -
E last()
又实现了 NavigableSet<E> 接口:
-
E higher(E value) 和E lower(E value):返回大于 value 的最小元素和小于 value 的最大元素,如果没有则返回 null -
E celling(E value)和E floor(E value):返回大于等于 value 的最小元素或小于等于 value 的最大元素,如果没有 则返回 null -
E pollFirst() 和E pullLast():删除并返回这个集合中的最大元素或最小元素,这个集合为空时返回 null -
Iterator<E> descendingIterator():返回一个按照递减顺序遍历集合中元素的迭代器
简单的 TreeSet 例子
我们可以以任意顺序将元素插入到集合中,在对集合进行遍历时,会返回排序好的值。例如:
运行结果:
正如 TreeSet 类名一般,排序是通过树数据结构完成的(实现的是红黑树),如果要使用树集,必须能够比较元素,即这些元素必须实现 Comparable 接口,或者构造集必须提供一个 Comparator。
自定义比较器的 TreeSet
树集中默认是升序,让我们来自定义一个降序的比较器:
运算结果:
下面来看一下 TreeSet 如何创建、往其中插入元素、如何搜索和字符串化操作。如何集合为空,则 TreeSet 只允许一个空值。TreeSet 的添加、删除和查找包含的函数的算法复杂度为 log(n)。
插入节点
参考链接:
- 《Java 核心技术 卷 1 》j(原书第 11 版):9.3.4 树集,Page 388-389
- https://pkg.go.dev/gitee.com/mirrors/gods.git/sets/treeset
- https://github.com/emirpasic/gods/blob/master/sets/treeset/treeset.go
边栏推荐
猜你喜欢

目标检测中的Classificition Loss

2022世界机器人大会即将举办,智能机器人助推传统行业向智能化、数字化转型升级

"Weekly Translate Go" This time we have something different!-- "How to Code in Go" series launched

基于STM32的简易示波器项目(含代码)——HAL库

nacos安装

Solutions and ideas for the problem that Loadrunner's recording event is 0

Postman使用简单演示
C语言详解系列——指针与结构体

Simple Mixed Operations Calculator

「每周译Go」这次我们来点不一样的!--《How to Code in Go》系列上线
随机推荐
带你深入理解3.4.2的版本更新,对用户带来了什么?
3 million tenders!Qingdao Medical Security Bureau host database middleware operation and maintenance service project
MySQL学习第一部分:认识MySQL
分分钟快速定制您的专属个性化软件应用——BizTool自动化工具简介
七、图结构
文档数据库中的文档可以有相同的数据结构嘛?
Hystrix熔断器
新款“廉价”SUV曝光,安全、舒适一个不落
自学脚手架——《热学》 by 李椿(第一,二,三,四,五章)
PWA 应用 Service Worker 缓存的一些可选策略和使用场景
LeetCode_14_最长公共前缀
CentOS MySQL体系管理
go调度原理
四、哈希表
dedecms支持Word图文一键导入
面试突击72:输入URL之后会执行什么流程?
EZVIZ and Xiaomi compete against smart cameras
典型的NoSQL数据库有哪些呢?
为什么说键值数据库有高可扩展性呢?
In ASP.NET Core 2.0, solve the configuration problem of large file upload