public class TreeSet
extends AbstractSet<E>
implements NavigableSet<E>, Cloneable, Serializable
java.lang.Object | |||
↳ | java.util.AbstractCollection<E> | ||
↳ | java.util.AbstractSet<E> | ||
↳ | java.util.TreeSet<E> |
一个NavigableSet
实现基于一个TreeMap
。 的元件使用其有序natural ordering ,或由Comparator
集合创建时提供,这取决于所使用的构造方法。
此实现提供了基本的操作(保证的log(n)时间成本 add
, remove
和 contains
)。
请注意,如果要正确实现Set
接口,则由集合(无论是否提供显式比较器)维护的顺序必须与equals保持一致 。 (请参见Comparable
或Comparator
以获得与等号一致的精确定义。)这是因为Set
接口是根据equals
操作定义的,但TreeSet
实例使用其compareTo
(或compare
)方法执行所有元素比较,因此两个从这个方法看,被这个方法认为是相等的元素是相等的。 即使排序与等号不一致,集合的行为也是明确定义的; 它只是不服从Set
接口的总体合同。
请注意,此实现不同步。 如果多个线程同时访问树集,并且至少有一个线程修改了该集,那么它必须在外部进行同步。 这通常是通过在自然封装集合的某个对象上进行同步来完成的。 如果不存在这样的对象,则该组应该使用Collections.synchronizedSortedSet
方法“包装”。 这最好在创建时完成,以防止意外的非同步访问:
SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));
这个类的iterator
方法返回的迭代器是快速失败的 :如果在迭代器创建后随时修改集合,除了通过迭代器自己的remove
方法之外,迭代器将抛出ConcurrentModificationException
。 因此,面对并发修改,迭代器快速而干净地失败,而不是在将来某个未确定的时间冒着任意的,非确定性的行为风险。
请注意,迭代器的故障快速行为无法得到保证,因为一般来说,在存在非同步并发修改的情况下不可能做出任何硬性保证。 失败快速迭代器以尽力而为的方式抛出ConcurrentModificationException
。 因此,编写一个依赖于此异常的程序是正确的: 迭代器的快速失败行为应仅用于检测错误。
本课是 Java Collections Framework的成员。
也可以看看:
Public constructors |
|
---|---|
TreeSet() 构造一个新的空树集合,根据元素的自然排序进行排序。 |
|
TreeSet(Comparator<? super E> comparator) 构造一个新的空树集合,根据指定的比较器进行排序。 |
|
TreeSet(Collection<? extends E> c) 构造一个新的树集,其中包含指定集合中的元素,并根据元素的 自然顺序进行排序 。 |
|
TreeSet(SortedSet<E> s) 构造一个包含相同元素并使用与指定的排序集相同顺序的新树集。 |
Public methods |
|
---|---|
boolean |
add(E e) 如果指定的元素不存在,则将其添加到此集合中。 |
boolean |
addAll(Collection<? extends E> c) 将指定集合中的所有元素添加到此集合中。 |
E |
ceiling(E e) 返回此集合中大于或等于给定元素的 |
void |
clear() 删除此组中的所有元素。 |
Object |
clone() 返回此 |
Comparator<? super E> |
comparator() 返回用于如果此set使用命令在该组中的元素,或 null比较 natural ordering的元素。 |
boolean |
contains(Object o) 如果此集合包含指定的元素,则返回 |
Iterator<E> |
descendingIterator() 以降序返回此集合中元素的迭代器。 |
NavigableSet<E> |
descendingSet() 返回此集合中包含的元素的逆序视图。 |
E |
first() 返回当前在这个集合中的第一个(最低)元素。 |
E |
floor(E e) 返回此集合中小于或等于给定元素的最大元素,如果不存在此元素,则 |
NavigableSet<E> |
headSet(E toElement, boolean inclusive) 返回此集合中元素小于(或等于,如果 |
SortedSet<E> |
headSet(E toElement) 返回此元素严格小于 toElement的部分视图。 相当于 |
E |
higher(E e) 返回此集合中的最小元素严格大于给定元素,或者如果不存在这样的元素,则 |
boolean |
isEmpty() 如果此集合不包含元素,则返回 |
Iterator<E> |
iterator() 以升序返回此集合中元素的迭代器。 |
E |
last() 返回当前在这个集合中的最后(最高)元素。 |
E |
lower(E e) 返回此集合中最大的元素严格小于给定元素,或者如果没有这样的元素,则 |
E |
pollFirst() 检索并删除第一个(最低)元素,如果此集合为空,则返回 |
E |
pollLast() 检索并删除最后一个(最高)元素,如果此集合为空,则返回 |
boolean |
remove(Object o) 如果存在,则从该集合中删除指定的元素。 |
int |
size() 返回此集合中元素的数量(基数)。 |
Spliterator<E> |
spliterator() 在此集合中的元素上创建 late-binding和 快速故障 |
NavigableSet<E> |
subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) 返回此集合中元素范围从 |
SortedSet<E> |
subSet(E fromElement, E toElement) 返回此集合中元素范围从 fromElement (包括 toElement )到 toElement (独占)的部分视图。 相当于 |
NavigableSet<E> |
tailSet(E fromElement, boolean inclusive) 返回此集合的元素大于(或等于,如果 |
SortedSet<E> |
tailSet(E fromElement) 返回该元素大于或等于 fromElement的部分视图。 相当于 |
Inherited methods |
|
---|---|
From class java.util.AbstractSet
|
|
From class java.util.AbstractCollection
|
|
From class java.lang.Object
|
|
From interface java.util.Set
|
|
From interface java.util.Collection
|
|
From interface java.util.NavigableSet
|
|
From interface java.lang.Iterable
|
|
From interface java.util.SortedSet
|
TreeSet ()
构造一个新的空树集合,根据元素的自然排序进行排序。 插入到集合中的所有元素必须实现Comparable
接口。 此外,所有这些元素都必须相互可比 : e1.compareTo(e2)
不得ClassCastException
中的任何元素e1
和e2
抛出ClassCastException
。 如果用户尝试向违反此约束的集合添加元素(例如,用户尝试将字符串元素添加到元素为整数的集合),则add
调用将抛出ClassCastException
。
TreeSet (Comparator<? super E> comparator)
构造一个新的空树集合,根据指定的比较器进行排序。 插入到集合中的所有元素必须通过指定的比较器相互比较: comparator.compare(e1, e2)
不得ClassCastException
中的任何元素e1
和e2
。 如果用户尝试向违反此限制的集合添加元素,则add
调用将抛出ClassCastException
。
Parameters | |
---|---|
comparator |
Comparator : the comparator that will be used to order this set. If null , the natural ordering of the elements will be used. |
TreeSet (Collection<? extends E> c)
构造一个新的树集,其中包含指定集合中的元素,并根据元素的自然顺序进行排序 。 插入到集合中的所有元素必须实现Comparable
接口。 此外,所有这些元素必须相互可比 : e1.compareTo(e2)
不得ClassCastException
中的任何元素e1
和e2
。
Parameters | |
---|---|
c |
Collection : collection whose elements will comprise the new set |
Throws | |
---|---|
ClassCastException |
if the elements in c are not Comparable , or are not mutually comparable |
NullPointerException |
if the specified collection is null |
TreeSet (SortedSet<E> s)
构造一个包含相同元素并使用与指定的排序集相同顺序的新树集。
Parameters | |
---|---|
s |
SortedSet : sorted set whose elements will comprise the new set |
Throws | |
---|---|
NullPointerException |
if the specified sorted set is null |
boolean add (E e)
如果指定的元素不存在,则将其添加到此集合中。 更正式地说,如果该集合不包含元素e2
例如(e==null ? e2==null : e.equals(e2)) ,则将指定的元素e
添加到该集合。 如果这个集合已经包含这个元素,那么这个调用离开这个集合并且返回false
。
Parameters | |
---|---|
e |
E : element to be added to this set |
Returns | |
---|---|
boolean |
true if this set did not already contain the specified element |
Throws | |
---|---|
ClassCastException |
if the specified object cannot be compared with the elements currently in this set |
NullPointerException |
if the specified element is null and this set uses natural ordering, or its comparator does not permit null elements |
boolean addAll (Collection<? extends E> c)
将指定集合中的所有元素添加到此集合中。
Parameters | |
---|---|
c |
Collection : collection containing elements to be added to this set |
Returns | |
---|---|
boolean |
true if this set changed as a result of the call |
Throws | |
---|---|
ClassCastException |
if the elements provided cannot be compared with the elements currently in the set |
NullPointerException |
if the specified collection is null or if any element is null and this set uses natural ordering, or its comparator does not permit null elements |
E ceiling (E e)
返回此集合中大于或等于给定元素的 null
元素,如果不存在此元素,则 null
。
Parameters | |
---|---|
e |
E : the value to match |
Returns | |
---|---|
E |
the least element greater than or equal to e , or null if there is no such element |
Throws | |
---|---|
ClassCastException |
|
NullPointerException |
if the specified element is null and this set uses natural ordering, or its comparator does not permit null elements |
Object clone ()
返回此TreeSet
实例的浅表副本。 (元素本身没有被克隆。)
Returns | |
---|---|
Object |
a shallow copy of this set |
Comparator<? super E> comparator ()
返回用于如果此set使用命令在该组中的元素,或 null比较 natural ordering的元素。
Returns | |
---|---|
Comparator<? super E> |
the comparator used to order the elements in this set, or null if this set uses the natural ordering of its elements |
boolean contains (Object o)
如果此集合包含指定的元素,则返回true
。 更正式地,返回true
当且仅当这个集合包含一个元素e
例如(o==null ? e==null : o.equals(e)) 。
Parameters | |
---|---|
o |
Object : object to be checked for containment in this set |
Returns | |
---|---|
boolean |
true if this set contains the specified element |
Throws | |
---|---|
ClassCastException |
if the specified object cannot be compared with the elements currently in the set |
NullPointerException |
if the specified element is null and this set uses natural ordering, or its comparator does not permit null elements |
Iterator<E> descendingIterator ()
以降序返回此集合中元素的迭代器。
Returns | |
---|---|
Iterator<E> |
an iterator over the elements in this set in descending order |
NavigableSet<E> descendingSet ()
返回此集合中包含的元素的逆序视图。 降序集由该集支持,因此对集的更改反映在降序集中,反之亦然。 如果两个集合中的任何一个在迭代过程中被修改(除了通过迭代器自己的remove
操作),迭代的结果是未定义的。
返回的集合的订购等同于Collections.reverseOrder
(comparator())
。 表达s.descendingSet().descendingSet()
返回一个视图的s
实质上等同于s
。
Returns | |
---|---|
NavigableSet<E> |
a reverse order view of this set |
E first ()
返回当前在这个集合中的第一个(最低)元素。
Returns | |
---|---|
E |
the first (lowest) element currently in this set |
Throws | |
---|---|
NoSuchElementException |
E floor (E e)
返回此集合中小于或等于给定元素的最大元素,如果不存在此元素,则 null
。
Parameters | |
---|---|
e |
E : the value to match |
Returns | |
---|---|
E |
the greatest element less than or equal to e , or null if there is no such element |
Throws | |
---|---|
ClassCastException |
|
NullPointerException |
if the specified element is null and this set uses natural ordering, or its comparator does not permit null elements |
NavigableSet<E> headSet (E toElement, boolean inclusive)
返回此集合的元素小于(或等于,如果inclusive
为true) toElement
。 返回的集合由此集合支持,因此返回集合中的更改将反映在此集合中,反之亦然。 返回的集合支持此集合支持的所有可选集操作。
返回的集合将抛出 IllegalArgumentException
尝试在其范围外插入元素。
Parameters | |
---|---|
toElement |
E : high endpoint of the returned set |
inclusive |
boolean : true if the high endpoint is to be included in the returned view |
Returns | |
---|---|
NavigableSet<E> |
a view of the portion of this set whose elements are less than (or equal to, if inclusive is true) toElement |
Throws | |
---|---|
ClassCastException |
|
NullPointerException |
if toElement is null and this set uses natural ordering, or its comparator does not permit null elements |
IllegalArgumentException |
SortedSet<E> headSet (E toElement)
返回该元素严格小于toElement的部分视图。 返回的集合由此集合支持,因此返回集合中的更改将反映在此集合中,反之亦然。 返回的集合支持此集合支持的所有可选集操作。
返回的集合将抛出 IllegalArgumentException尝试在其范围外插入元素。
相当于 headSet(toElement, false)
。
Parameters | |
---|---|
toElement |
E : high endpoint (exclusive) of the returned set |
Returns | |
---|---|
SortedSet<E> |
a view of the portion of this set whose elements are strictly less than toElement |
Throws | |
---|---|
ClassCastException |
|
NullPointerException |
if toElement is null and this set uses natural ordering, or its comparator does not permit null elements |
IllegalArgumentException |
E higher (E e)
返回此集合中的最小元素严格大于给定元素,或者如果不存在这样的元素,则 null
。
Parameters | |
---|---|
e |
E : the value to match |
Returns | |
---|---|
E |
the least element greater than e , or null if there is no such element |
Throws | |
---|---|
ClassCastException |
|
NullPointerException |
if the specified element is null and this set uses natural ordering, or its comparator does not permit null elements |
boolean isEmpty ()
如果此集合不包含元素,则返回 true
。
Returns | |
---|---|
boolean |
true if this set contains no elements |
Iterator<E> iterator ()
以升序返回此集合中元素的迭代器。
Returns | |
---|---|
Iterator<E> |
an iterator over the elements in this set in ascending order |
E last ()
返回当前在这个集合中的最后(最高)元素。
Returns | |
---|---|
E |
the last (highest) element currently in this set |
Throws | |
---|---|
NoSuchElementException |
E lower (E e)
返回此集合中最大的元素严格小于给定元素,或者如果没有这样的元素, null
。
Parameters | |
---|---|
e |
E : the value to match |
Returns | |
---|---|
E |
the greatest element less than e , or null if there is no such element |
Throws | |
---|---|
ClassCastException |
|
NullPointerException |
if the specified element is null and this set uses natural ordering, or its comparator does not permit null elements |
E pollFirst ()
检索并删除第一个(最低)元素,如果此集合为空,则返回 null
。
Returns | |
---|---|
E |
the first element, or null if this set is empty |
E pollLast ()
检索并删除最后一个(最高)元素,如果此集合为空,则返回 null
。
Returns | |
---|---|
E |
the last element, or null if this set is empty |
boolean remove (Object o)
如果存在,则从该集合中删除指定的元素。 更正式地说,删除一个元素e
例如(o==null ? e==null : o.equals(e)) ,如果这个集合包含这样的元素。 如果此集合包含该元素(或等同地,如果此集合因呼叫而改变),则返回true
。 (一旦调用返回,此集合将不包含该元素。)
Parameters | |
---|---|
o |
Object : object to be removed from this set, if present |
Returns | |
---|---|
boolean |
true if this set contained the specified element |
Throws | |
---|---|
ClassCastException |
if the specified object cannot be compared with the elements currently in this set |
NullPointerException |
if the specified element is null and this set uses natural ordering, or its comparator does not permit null elements |
int size ()
返回此集合中元素的数量(基数)。
Returns | |
---|---|
int |
the number of elements in this set (its cardinality) |
Spliterator<E> spliterator ()
创建一个 late-binding和 快速故障 Spliterator
覆盖此组中的元素。
该Spliterator
报告SIZED
, DISTINCT
, SORTED
,并ORDERED
。 重写实现应记录附加特征值的报告。
该spliterator的比较(见getComparator()
)是null
如果树集的比较(见comparator()
)是null
。 否则,分割器的比较器与树集的比较器相同或者施加相同的总排序。
Returns | |
---|---|
Spliterator<E> |
a Spliterator over the elements in this set |
NavigableSet<E> subSet (E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
返回此集合中元素范围从fromElement
到toElement
的部分视图。 如果fromElement
和toElement
相等,则返回的集合为空,除非fromInclusive
和toInclusive
均为真。 返回的集合由此集合支持,因此返回集合中的更改将反映在此集合中,反之亦然。 返回的集合支持此集合支持的所有可选集操作。
返回的集合将抛出 IllegalArgumentException
尝试在其范围外插入元素。
Parameters | |
---|---|
fromElement |
E : low endpoint of the returned set |
fromInclusive |
boolean : true if the low endpoint is to be included in the returned view |
toElement |
E : high endpoint of the returned set |
toInclusive |
boolean : true if the high endpoint is to be included in the returned view |
Returns | |
---|---|
NavigableSet<E> |
a view of the portion of this set whose elements range from fromElement , inclusive, to toElement , exclusive |
Throws | |
---|---|
ClassCastException |
|
NullPointerException |
if fromElement or toElement is null and this set uses natural ordering, or its comparator does not permit null elements |
IllegalArgumentException |
SortedSet<E> subSet (E fromElement, E toElement)
返回此集合的部分视图,其元素范围从fromElement (含)到toElement (独占)。 (如果fromElement和toElement相等,则返回的集合是空的。)返回的集合由此集合支持,因此返回的集合中的更改将反映在此集合中,反之亦然。 返回的集合支持此集合支持的所有可选集操作。
返回的集合将抛出 IllegalArgumentException试图在其范围外插入元素。
相当于 subSet(fromElement, true, toElement, false)
。
Parameters | |
---|---|
fromElement |
E : low endpoint (inclusive) of the returned set |
toElement |
E : high endpoint (exclusive) of the returned set |
Returns | |
---|---|
SortedSet<E> |
a view of the portion of this set whose elements range from fromElement, inclusive, to toElement, exclusive |
Throws | |
---|---|
ClassCastException |
|
NullPointerException |
if fromElement or toElement is null and this set uses natural ordering, or its comparator does not permit null elements |
IllegalArgumentException |
NavigableSet<E> tailSet (E fromElement, boolean inclusive)
返回此集合中元素大于(或等于,如果inclusive
为true)的部分的fromElement
。 返回的集合由此集合支持,因此返回集合中的更改将反映在此集合中,反之亦然。 返回的集合支持此集合支持的所有可选集操作。
返回的集合将抛出 IllegalArgumentException
试图在其范围外插入元素。
Parameters | |
---|---|
fromElement |
E : low endpoint of the returned set |
inclusive |
boolean : true if the low endpoint is to be included in the returned view |
Returns | |
---|---|
NavigableSet<E> |
a view of the portion of this set whose elements are greater than or equal to fromElement |
Throws | |
---|---|
ClassCastException |
|
NullPointerException |
if fromElement is null and this set uses natural ordering, or its comparator does not permit null elements |
IllegalArgumentException |
SortedSet<E> tailSet (E fromElement)
返回此元素大于或等于fromElement的部分视图。 返回的集合由此集合支持,因此返回集合中的更改将反映在此集合中,反之亦然。 返回的集合支持此集合支持的所有可选集操作。
返回的集合将抛出 IllegalArgumentException尝试在其范围外插入元素。
相当于 tailSet(fromElement, true)
。
Parameters | |
---|---|
fromElement |
E : low endpoint (inclusive) of the returned set |
Returns | |
---|---|
SortedSet<E> |
a view of the portion of this set whose elements are greater than or equal to fromElement |
Throws | |
---|---|
ClassCastException |
|
NullPointerException |
if fromElement is null and this set uses natural ordering, or its comparator does not permit null elements |
IllegalArgumentException |