这期内容当中小编将会给大家带来有关在Java中如何正确的使用TreeSet,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
<强> TreeSet简介强>
TreeSet是一个有序的集合,它的作用是提供有序集的组合。它继承于套抽象抽象类,实现了NavigableSet
TreeSet继承于套抽象,所以它是一个集集合,具有设置的属性和方法。
TreeSet实现了NavigableSet接口,意味着它支持一系列的导航方法。比如查找与指定目标最匹配项。
TreeSet实现了可克隆接口,意味着它能被克隆。
TreeSet实现了io。可序列化的接口,意味着它支持序列化。
TreeSet是基于TreeMap实现的.TreeSet中的元素支持2种排序方式:自然排序或者根据创建TreeSet时提供的比较器进行排序。这取决于使用的构造方法。
TreeSet为基本操作(添加、删除和包含)提供受保证的log (n)时间开销。
另外,TreeSet是非同步的。它的迭代器方法返回的迭代器是快速失败的只
//默认构造函数。使用该构造函数,TreeSet中的元素按照自然排序进行排列。 TreeSet ()//创建的TreeSet包含集合 TreeSet (Collection<及# 63;E>延伸;收集)//指定TreeSet的比较器 TreeSet (Comparator<及# 63;超级E>比较器)//创建的TreeSet包含集 TreeSet (SortedSet集)
布尔加(E对象) 布尔addAll (Collection<及# 63;E>延伸;收集) 空白clear () 对象克隆() 布尔包含对象(对象) E第() 布尔isEmpty () 去年(E) E pollFirst () E pollLast () E低(E E) E层(E E) E上限(E E) E更高(E E) 逻辑删除对象(对象) int大小() Comparator<及# 63;超级E>比较器() Iterator迭代器() Iterator descendingIterator () SortedSet 耳机(E) NavigableSet descendingSet () NavigableSet 耳机(E,布尔endInclusive) SortedSet 子集(E, E) NavigableSet 子集(E开始,布尔startInclusive, E,布尔endInclusive) NavigableSet tailSet (E开始,布尔startInclusive) SortedSet tailSet (E)
<强>说明:
强>
(01) TreeSet是有序集的组合,因此支持添加、删除得到等方法。
(02)和NavigableSet一样,TreeSet的导航方法大致可以区分为两类,一类时提供元素项的导航方法,返回某个元素;另一类时提供集合的导航方法,返回某个集合。
低,地板,天花板和更高分别返回小于,小于等于,大于等于,大于给定元素的元素,如果不存在这样的元素,则返回零只
<强>第2部分TreeSet数据结构强>
java . lang . object ,# 8627;java.util.AbstractCollection,# 8627;java.util.AbstractSet ,# 8627;java.util.TreeSet 公开课TreeSet 扩展AbstractSet 实现NavigableSet 可克隆,io。可序列化的{}
TreeSet与收集关系如下图:
从图中可以看出:
(01) TreeSet继承于套抽象,并且实现了NavigableSet接口。
(02) TreeSet的本质是一个“有序的,并且没有重复元素“的集合,它是通过TreeMap实现的.TreeSet中含有一个“NavigableMap类型的成员变量“m,而m实际上是“TreeMap的实例“。
<强>第3部分TreeSet源码解析(基于JDK1.6.0_45)
强>
为了更了解TreeSet的原理,下面对TreeSet源码代码作出分析。
包java.util; 公开课TreeSet扩展AbstractSet 可克隆,实现NavigableSet m;//TreeSet是通过TreeMap实现的,//现在是键-值对中的值。 私有静态最终对象现在=新对象();//不带参数的构造函数。创建一个空的TreeMap 公共TreeSet () { 这(新的TreeMap ()); }//将TreeMap赋值给“NavigableMap对象m" TreeSet (NavigableMap 米){ 这一点。m=m; }//带比较器的构造函数。 公共TreeSet (Comparator<及# 63;超级E>比较器){ 这(新的TreeMap (比较); }//创建TreeSet,并将集合c中的全部元素都添加到TreeSet中 公共TreeSet (Collection<及# 63;E>延伸;c) { 这();//将集合c中的元素全部添加到TreeSet中 addAll (c); }//创建TreeSet,并将年代中的全部元素都添加到TreeSet中 公共TreeSet (SortedSet 在Java中如何正确的使用TreeSet