Java特殊数据结构-TreeSet
- TreeSet初步入门总结 https://www.cnblogs.com/yzssoft/p/7127894.html
- TreeSet自然排序与比较器排序精讲 https://blog.csdn.net/xiaofei__/article/details/53138681
- TreeSet概念以及遍历方法 https://www.cnblogs.com/Tony-cheen/p/5681831.html
- TreeSet是JAVA中集合的一种有序集合,它的作用是提供有序的Set集合。它继承于AbstractSet抽象类,实现了NavigableSet<E>,Cloneable,java.io.Serializable接口。
- 因为TreeSet继承了AbstractSet抽象类,所以它是一个set集合,可以被实例化,且具有set的属性和add、remove、get等方法。
- TreeSet是基于TreeMap实现的。TreeSet中的元素支持2种排序方式:自然排序和比较器排序。
- TreeSet的性能比HashSet差,简单比较:HashSet使用散列表进行存储,元素无序,元素允许为null。TreeSet是使用树结构来进行存储,元素按字符串顺序排序存储,元素不允许为null。
- public class TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>, Cloneable, java.io.Serializable{}
- a.自然顺序(Comparable)
- TreeSet类的add()方法中会把存入的对象提升为Comparable类型
- 调用对象的compareTo()方法和集合中的对象比较
- 根据compareTo()方法返回的结果进行存储
- b.比较器顺序(Comparator)
- 创建TreeSet的时候可以制定 一个Comparator
- 如果传入了Comparator的子类对象, 那么TreeSet就会按照比较器中的顺序排序
- add()方法内部会自动调用Comparator接口中compare()方法排序
- 调用的对象是compare方法的第一个参数,集合中的对象是compare方法的第二个参数
- c.两种方式的区别
- TreeSet构造函数什么都不传, 默认按照类中Comparable的顺序(没有就报错ClassCastException)
- TreeSet如果传入Comparator, 就优先按照Comparator
- TreeSet的遍历方式
- for(Iterator iter = set.iterator(); iter.hasNext(); ) {
- iter.next();
- }
- // 假设set是TreeSet对象
- for(Iterator iter = set.descendingIterator(); iter.hasNext(); ) {
- iter.next();
- }
- // 假设set是TreeSet对象,并且set中元素是String类型
- String[] arr = (String[])set.toArray(new String[0]);
- for (String str:arr)
- System.out.printf("for each : %s\n", str);
TreeSet 的构造函数
序号
|
构造函数的说明
|
1
|
TreeSet ()
此构造函数构造空树集,将在根据其元素的自然顺序按升序排序。
|
2
|
TreeSet (集合 c)
此构造函数生成树的集合,它包含的元素的集合 c。
|
3
|
TreeSet (比较器 comp)
此构造函数构造一个空树集,将根据给定的比较器进行排序。
|
4
|
TreeSet (SortedSet ss)
此构造函数生成包含给定 SortedSet 的元素 TreeSet
|
TreeSet的方法总结
修饰符和类型
|
方法和描述
|
boolean
|
add(E e)
将指定的元素添加到这套,如果它已不存在。
|
boolean
|
addAll(Collection<? extends E> c)
在加入这一组指定的集合中添加的所有元素。
|
E
|
ceiling(E e)
返回最小的元素在这一组大于或等于给定的元素,则null如果没有这样的元素。
|
void
|
clear()
从这一组中移除所有元素。
|
Object
|
clone()
返回此TreeSet实例浅表副本。
|
Comparator<? super E>
|
comparator()
返回用于排序在这集,或空元素,如果这套使用自然排序其元素的比较。
|
boolean
|
contains(Object o)
如果此集合包含指定的元素,则返回true 。
|
Iterator<E>
|
descendingIterator()
返回迭代器中这套降序排序的元素。
|
NavigableSet<E>
|
descendingSet()
返回逆序视图中包含的元素这一套。
|
E
|
first()
返回第一个 (最低) 元素当前在这一套。
|
E
|
floor(E e)
返回的最大元素在这一组小于或等于null如果没有这样的元素。
|
SortedSet<E>
|
headSet(E toElement)
返回其元素是严格小于toElement这套的部分视图.
|
NavigableSet<E>
|
headSet(E toElement, boolean inclusive)
返回一个视图的这部分设置的元素都小于 (或等于,如果inclusive是真的) toElement.
|
E
|
higher(E e)
返回最小的元素在这套严格大于给定的元素,则null如果没有这样的元素。
|
boolean
|
isEmpty()
如果此集不包含任何元素,则返回true 。
|
Iterator<E>
|
iterator()
返回迭代器中这套以升序排序的元素。
|
E
|
last()
在这套目前返回的最后一个 (最高) 的元素。
|
E
|
lower(E e)
在这一套严格的小于给定的元素,则null返回的最大元素,如果没有这样的元素。
|
E
|
pollFirst()
检索和删除第一个 (最低) 元素,或如果此集合为空,则返回null 。
|
E
|
pollLast()
检索和删除的最后一个 (最高) 的元素,或如果此集合为空,则返回null 。
|
boolean
|
remove(Object o)
从这一组中移除指定的元素,如果它存在。
|
int
|
size()
在这套 (其基数) 中返回的元素的数目。
|
NavigableSet<E>
|
subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
返回此集的部分视图的元素范围从fromElement到toElement.
|
SortedSet<E>
|
subSet(E fromElement, E toElement)
返回视图的部分的这一套的元素范围从fromElement,具有包容性,到toElement,独家。
|
SortedSet<E>
|
tailSet(E fromElement)
返回其元素是大于或等于fromElement这套的部分视图.
|
NavigableSet<E>
|
tailSet(E fromElement, boolean inclusive)
返回其元素是大于 (或等于,如果inclusive是真的) 这套的部分视图fromElement.
|
Java特殊数据结构-TreeSet的更多相关文章
- JAVA常用数据结构及原理分析
JAVA常用数据结构及原理分析 http://www.2cto.com/kf/201506/412305.html 前不久面试官让我说一下怎么理解java数据结构框架,之前也看过部分源码,balaba ...
- (6)Java数据结构-- 转:JAVA常用数据结构及原理分析
JAVA常用数据结构及原理分析 http://www.2cto.com/kf/201506/412305.html 前不久面试官让我说一下怎么理解java数据结构框架,之前也看过部分源码,balab ...
- 【转】Java学习---Java核心数据结构(List,Map,Set)使用技巧与优化
[原文]https://www.toutiao.com/i6594587397101453827/ Java核心数据结构(List,Map,Set)使用技巧与优化 JDK提供了一组主要的数据结构实现, ...
- Java HashSet和TreeSet【笔记】
Java HashSet和TreeSet[笔记] PS:HashSet.TreeSet 两个类是在 Map 的基础上组装起来的类 HashSet 类注释 1.底层实现基于 HashMap,所以迭代时不 ...
- java项目——数据结构实验报告
java项目——数据结构总结报告 20135315 宋宸宁 实验要求 1.用java语言实现数据结构中的线性表.哈希表.树.图.队列.堆栈.排序查找算法的类. 2.设计集合框架,使用泛型实现各类. ...
- Java深入了解TreeSet
Java中的TreeSet是Set的一个子类,TreeSet集合是用来对象元素进行排序的,同样他也可以保证元素的唯一.那TreeSet为什么能保证元素唯一,它是怎样排序的呢?先看一段代码: publi ...
- 【转载】图解Java常用数据结构(一)
图解Java常用数据结构(一) 作者:大道方圆 原文:https://www.cnblogs.com/xdecode/p/9321848.html 最近在整理数据结构方面的知识, 系统化看了下Jav ...
- java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表
java实现 数据结构:链表. 栈. 队列.优先级队列.哈希表 数据结构javavector工作importlist 最近在准备找工作的事情,就复习了一下java.翻了一下书和网上的教材,发现虽然 ...
- Java同步数据结构之ConcurrentSkipListMap/ConcurrentSkipListSet
引言 上一篇Java同步数据结构之Map概述及ConcurrentSkipListMap原理已经将ConcurrentSkipListMap的原理大致搞清楚了,它是一种有序的能够实现高效插入,删除,更 ...
随机推荐
- Zabbix4.2Server端部署
一.安装 1.前期安装准备 前期准备一个大一点的分区准备用于zabbix 数据库的存放,为方便后期扩容,我们在这里选择新加一个磁盘并以LVM的方式进行挂载(此处省略虚拟机添加硬盘等操作) # df - ...
- 自动化测试环境搭建(appium+selenium+python)
一.需要安装的软件(根据你所需要的版本安装即可,不一定必须按照小编的版本来) JDK:1.8.0_171 Python:3.7.1 node.js:10.13.0 android-sdk_r24.4. ...
- bzoj 1787 && bzoj 1832: [Ahoi2008]Meet 紧急集合(倍增LCA)算法竞赛进阶指南
题目描述 原题连接 Y岛风景美丽宜人,气候温和,物产丰富. Y岛上有N个城市(编号\(1,2,-,N\)),有\(N-1\)条城市间的道路连接着它们. 每一条道路都连接某两个城市. 幸运的是,小可可通 ...
- 单元测试框架之unittest(一)
一.单元测试的含义 unittest单元测试框架的设计灵感来源于Junit(Java语言的单元测试框架),它与其他语言的单元测试框架风格相类似,支持自动化测试.为测试共享setUp和shutDown. ...
- 粗暴,干就完了----徐晓冬似的C语言自学笔记----前言
10对年前就觉得C/C++语言很酷,第一印象就是90年代末,个人电脑在中华大地开始普及的岁月中,层出不穷的病毒,对了,全是C/C++写的:除了危及人民群众信息安全以外,C系列语言用途甚广,可以发明其他 ...
- python打开excel跳转对应分页
需求: 在python脚本层,直接打开excel,跳转特定分页,方便策划编辑 尝试了几种不同的方法,最终选择了方法4.4种方法都可以实现打开外部文件,3.4可以实现跳转特定分页.3和4的区别是,3通过 ...
- Spring Framwork Maven dependency
Spring Framwork 更新时间 2019.12.21 统一版本号 <properties> <!-- spring版本号 --> <spring.version ...
- 【方法】移动端H5如何调用相册和相机上传图片、音频、视频
在移动端上传图片方法很简单,使用HTML5中的input:file供文件上传. <一>常用属性值: 1.accept:规定文件上传来提交的文件类型,此属性只能和type:file配合使用 ...
- shell 脚本拉取svn代码,vim中文乱码解决办法
VIM安装成功后可以使用,但对中文是乱码,解决方法是在vim的配置文档中添加相关设置即可: 找到etc/vimrc 编辑~/.vimrc文件,加上如下几行: set fileencodings=utf ...
- linux如何查看ip地址
使用命令: ifconfig -a 例如: