E - 由此集合维护的元素的类型
public class TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>, Cloneable, Serializable
NavigableSet实现基于TreeMap 。
的元件使用其有序natural ordering ,或由Comparator集合创建时提供,这取决于所使用的构造方法。
此实现提供了基本的操作(保证的log(n)时间成本add , remove和contains )。
需要注意的是由一组(无论是否提供了明确的比较器)保持的顺序必须与equals一致 ,如果它是要正确实现Set接口。 (参见Comparable或Comparator为一致的精确定义与equals)。这是因为该Set接口在来定义equals的操作,但一个TreeSet例如使用其执行所有元件比较compareTo (或compare )方法,于是两个通过该方法认为相等的元素从集合的角度来看是相等的。 集合的行为是明确定义的,即使其排序与equals不一致; 它只是没有遵守Set界面的总体合同。
请注意,此实现不同步。 如果多个线程并发访问树,并且至少有一个线程修改该集合,则必须在外部进行同步。 这通常通过在自然地封装集合的一些对象上进行同步来实现。 如果没有这样的对象存在,那么该集合应该使用Collections.synchronizedSortedSet方法“包装”。 这最好在创建时完成,以防止对该集合的意外不同步访问:
SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));
该类iterator方法返回的迭代器是故障快速的 :如果在迭代器创建之后的任何时间对该集合进行了修改,除了通过迭代器自己的remove方法之外,迭代器将抛出一个ConcurrentModificationException 。 因此,面对并发修改,迭代器将快速而干净地失败,而不是在未来未确定的时间冒着任意的非确定性行为。
请注意,迭代器的故障快速行为无法保证,因为一般来说,在不同步并发修改的情况下,无法做出任何硬性保证。 失败快速迭代器尽力投入ConcurrentModificationException 。 因此,编写依赖于此异常的程序的正确性将是错误的:迭代器的故障快速行为应仅用于检测错误。
Collection , Set , HashSet , Comparable , Comparator , TreeMap , Serialized Form
| Constructor and Description |
|---|
TreeSet()
构造一个新的,空的树组,根据其元素的自然排序进行排序。
|
TreeSet(Collection<? extends E> c)
构造一个包含指定集合中的元素的新树集,根据其元素的
自然排序进行排序 。
|
TreeSet(Comparator<? super E> comparator)
构造一个新的,空的树集,根据指定的比较器进行排序。
|
TreeSet(SortedSet<E> s)
构造一个包含相同元素的新树,并使用与指定排序集相同的顺序。
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
add(E e)
将指定的元素添加到此集合(如果尚未存在)。
|
boolean |
addAll(Collection<? extends E> c)
将指定集合中的所有元素添加到此集合中。
|
E |
ceiling(E e)
返回此集合中最小元素大于或等于给定元素,如果没有此元素,则返回
null 。
|
void |
clear()
从此集合中删除所有元素。
|
Object |
clone()
返回此
TreeSet实例的浅拷贝。
|
Comparator<? super E> |
comparator()
返回用于对该集合中的元素进行排序的比较器,或null,如果此集合使用其元素的natural ordering 。
|
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()
返回此集合中的元素数(其基数)。
|
Spliterator<E> |
spliterator()
在此集合中的元素上创建late-binding和故障切换 Spliterator 。
|
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 。
|
equals, hashCode, removeAllcontainsAll, retainAll, toArray, toArray, toStringfinalize, getClass, notify, notifyAll, wait, wait, waitcontainsAll, equals, hashCode, removeAll, retainAll, toArray, toArrayparallelStream, removeIf, streampublic TreeSet()
Comparable接口。
此外,所有这些元素必须是相互可比的 : e1.compareTo(e2)不能为ClassCastException中的任何元素e1和e2 。
如果用户尝试向组中添加违反此约束的元素(例如,用户尝试将字符串元素添加到其元素为整数的集合),则add调用将抛出ClassCastException 。
public TreeSet(Comparator<? super E> comparator)
comparator.compare(e1, e2)不能为ClassCastException中的任何元素e1和e2 。
如果用户尝试向该集合添加一个违反此约束的元素,则add调用将抛出ClassCastException 。
comparator - 将用于对该集合进行排序的比较器。
如果null ,该natural ordering的元素将被使用。
public TreeSet(Collection<? extends E> c)
Comparable接口。
此外,所有这些元素必须是相互可比的 : e1.compareTo(e2)不能为ClassCastException中的任何元素e1和e2 。
c - 其元素将组成新集合的集合
ClassCastException - 如果c中的元素不是Comparable ,或者不相互比较
NullPointerException - 如果指定的集合为空
public TreeSet(SortedSet<E> s)
s - 其元素将组成新集合的排序集
NullPointerException - 如果指定的排序集为空
public Iterator<E> iterator()
iterator在界面
Iterable<E>
iterator在界面
Collection<E>
iterator在界面
NavigableSet<E>
iterator在界面
Set<E>
iterator在类别
AbstractCollection<E>
public Iterator<E> descendingIterator()
descendingIterator在界面
NavigableSet<E>
public NavigableSet<E> descendingSet()
NavigableSet复制
remove操作),迭代的结果是未定义的。
返回的集合的订单等效于Collections.reverseOrder(comparator()) 。 表达式s.descendingSet().descendingSet()返回s.descendingSet().descendingSet()的视图, s相当于s 。
descendingSet在界面
NavigableSet<E>
public int size()
size在界面
Collection<E>
size在界面
Set<E>
size在类别
AbstractCollection<E>
public boolean isEmpty()
true 。
isEmpty在界面
Collection<E>
isEmpty在界面
Set<E>
isEmpty在
AbstractCollection<E>
true如果此集合不包含元素
public boolean contains(Object o)
true 。
更正式地,返回true当且仅当这个集合包含一个元素e这样(o==null ? e==null : o.equals(e)) 。
contains在界面
Collection<E>
contains在界面
Set<E>
contains在
AbstractCollection<E>
o - 要在此集合中检查包含的对象
true如果此集合包含指定的元素
ClassCastException - 如果指定的对象不能与当前集合中的元素进行比较
NullPointerException - 如果指定的元素为空,并且该集合使用自然排序,或者其比较器不允许空元素
public boolean add(E e)
e添加到该集合,如果该集合不包含元素e2 ,使得(e==null ? e2==null : e.equals(e2)) 。
如果该集合已经包含该元素,则该呼叫将使该集合保持不变,并返回false 。
add在界面
Collection<E>
add在界面
Set<E>
add在类别
AbstractCollection<E>
e - 要添加到此集合的元素
true如果此集合尚未包含指定的元素
ClassCastException - 如果指定的对象不能与当前在此集合中的元素进行比较
NullPointerException - 如果指定的元素为空,并且该集合使用自然排序,或者其比较器不允许空元素
public boolean remove(Object o)
e使得(o==null ? e==null : o.equals(e)) ,如果这个集合包含这样一个元素。
如果此集合包含元素(或等效地,如果该集合由于调用而更改),则返回true 。
(一旦调用返回,此集合将不包含该元素。)
remove在界面
Collection<E>
remove在界面
Set<E>
remove在类别
AbstractCollection<E>
o - 要从该集合中删除的对象(如果存在)
true如果这个集合包含指定的元素
ClassCastException - 如果指定的对象不能与当前在此集合中的元素进行比较
NullPointerException - 如果指定的元素为空,并且该集合使用自然排序,或者其比较器不允许空元素
public void clear()
clear在界面
Collection<E>
clear在界面
Set<E>
clear在
AbstractCollection<E>
public boolean addAll(Collection<? extends E> c)
addAll在界面
Collection<E>
addAll在界面
Set<E>
addAll在
AbstractCollection<E>
c - 包含要添加到此集合的元素的集合
true如果此设置由于呼叫而更改
ClassCastException - 如果提供的元素不能与当前集合中的元素进行比较
NullPointerException - 如果指定的集合为空,或者如果任何元素为空,并且该集合使用自然排序,或者其比较器不允许空元素
AbstractCollection.add(Object)
public NavigableSet<E> subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
NavigableSet复制
fromElement到toElement 。
如果fromElement和toElement相等,则返回的集合为空,除非fromInclusive和toInclusive都为真。
返回的集合由此集合支持,因此返回集合中的更改将反映在此集合中,反之亦然。
返回的集合支持该集支持的所有可选集合操作。
返回的集合将抛出一个IllegalArgumentException ,试图在其范围之外插入一个元素。
subSet在界面
NavigableSet<E>
fromElement - 返回集合的低端点
fromInclusive -
true如果
true低端点包括在返回的视图中
toElement - 返回集合的高端点
toInclusive -
true如果高端点要包含在返回的视图中
fromElement (包括)到
toElement ,独占
ClassCastException - 如果fromElement和toElement无法使用该集合的比较器彼此进行比较(或者如果该集合没有比较器,则使用自然排序)。
如果fromElement或toElement无法与当前集合中的元素进行比较,则实施可能但不是必须抛出此异常。
NullPointerException - 如果
fromElement或
toElement为空,并且此集合使用自然排序,或其比较器不允许空元素
IllegalArgumentException - 如果fromElement大于toElement ;
或者如果此设置本身具有限制范围,并且fromElement或toElement位于范围的范围之外。
public NavigableSet<E> headSet(E toElement, boolean inclusive)
NavigableSet复制
inclusive为真) toElement 。
返回的集合由此集合支持,因此返回集合中的更改将反映在此集合中,反之亦然。
返回的集合支持该集支持的所有可选集合操作。
返回的集合将抛出一个IllegalArgumentException ,试图在其范围之外插入一个元素。
headSet在界面
NavigableSet<E>
toElement - 返回集合的高端点
inclusive -
true如果高端点要包含在返回的视图中
inclusive为真)的
toElement )
toElement
ClassCastException - 如果toElement与此设置的toElement器不兼容(或如果该集合没有比较器,则toElement不实现Comparable )。
如果toElement无法与当前集合中的元素进行比较,则实施可能但不是必须抛出此异常。
NullPointerException - 如果
toElement为空,并且该集合使用自然排序,或其比较器不允许空元素
IllegalArgumentException - 如果此设置本身具有限制范围,并且
toElement位于范围的边界之外
public NavigableSet<E> tailSet(E fromElement, boolean inclusive)
NavigableSet复制
inclusive为真) fromElement 。
返回的集合由此集合支持,因此返回集合中的更改将反映在此集合中,反之亦然。
返回的集合支持该集支持的所有可选集合操作。
返回的集合将抛出一个IllegalArgumentException ,试图在其范围之外插入一个元素。
tailSet在界面
NavigableSet<E>
fromElement - 返回集合的低端点
inclusive -
true如果
true低端点包括在返回的视图中
fromElement
ClassCastException - 如果fromElement与此设置的fromElement器不兼容(或如果该组没有比较器,如果fromElement未实现Comparable )。
如果fromElement无法与当前集合中的元素进行比较,则实施可能但不是必须抛出此异常。
NullPointerException - 如果
fromElement为null,并且该集合使用自然排序,或者其比较器不允许空元素
IllegalArgumentException - 如果此设置本身具有限制范围,并且
fromElement位于范围的范围之外
public SortedSet<E> subSet(E fromElement, E toElement)
NavigableSet复制
返回的集合将抛出一个IllegalArgumentException ,试图在其范围之外插入一个元素。
相当于subSet(fromElement, true, toElement, false) 。
subSet在界面
NavigableSet<E>
subSet在界面
SortedSet<E>
fromElement - 返回集合的低端点(含)
toElement - 返回集合的高端点(独占)
ClassCastException - 如果fromElement和toElement无法使用该集合的比较器彼此进行比较(或者如果该集合没有比较器,则使用自然排序)。
如果fromElement或toElement无法与当前在集合中的元素进行比较,则实施可能但不是必须抛出此异常。
NullPointerException - 如果
fromElement或
toElement为空,并且该集合使用自然排序,或其比较器不允许空元素
IllegalArgumentException - 如果fromElement大于toElement ;
或者如果此设置本身具有限制范围,并且fromElement或toElement位于范围的边界之外
public SortedSet<E> headSet(E toElement)
NavigableSet复制
返回的集合将抛出一个IllegalArgumentException ,尝试在其范围之外插入一个元素。
相当于headSet(toElement, false) 。
headSet在界面
NavigableSet<E>
headSet在界面
SortedSet<E>
toElement - 返回集合的高端点(独占)
ClassCastException - 如果toElement与此集合的比较器不兼容(或者如果该集合没有比较器,则toElement不实现Comparable )。
如果toElement无法与当前集合中的元素进行比较,则实施可能但不是必须抛出此异常。
NullPointerException - 如果
toElement为空,并且该集合使用自然排序,或者其比较器不允许空元素
IllegalArgumentException - 如果此设置本身具有限制范围,并且
toElement位于范围的范围之外
public SortedSet<E> tailSet(E fromElement)
NavigableSet复制
返回的集合将抛出一个IllegalArgumentException ,试图在其范围之外插入一个元素。
相当于tailSet(fromElement, true) 。
tailSet在界面
NavigableSet<E>
tailSet在界面
SortedSet<E>
fromElement - 返回集合的低端点(含)
ClassCastException - 如果fromElement与此集合的比较器不兼容(或者如果该集合没有比较器,则fromElement不实现Comparable )。
如果fromElement无法与当前集合中的元素进行比较,则实施可能但不是必须抛出此异常。
NullPointerException - 如果
fromElement为空,并且该集合使用自然排序,或其比较器不允许空元素
IllegalArgumentException - 如果此设置本身具有限制范围,并且
fromElement位于范围的范围之外
public Comparator<? super E> comparator()
SortedSet复制
comparator在界面
SortedSet<E>
public E first()
SortedSet复制
first在界面
SortedSet<E>
NoSuchElementException - 如果此设置为空
public E last()
SortedSet复制
last在界面
SortedSet<E>
NoSuchElementException - 如果此设置为空
public E lower(E e)
NavigableSet复制
null 。
lower在界面
NavigableSet<E>
e - 要匹配的值
e ,或
null如果没有这样的元素
ClassCastException - 如果指定的元素不能与当前集合中的元素进行比较
NullPointerException - 如果指定的元素为空,并且该集合使用自然排序,或者其比较器不允许空元素
public E floor(E e)
NavigableSet复制
null 。
floor在界面
NavigableSet<E>
e - 要匹配的值
e ,或
null如果没有这样的元素
ClassCastException - 如果指定的元素不能与当前集合中的元素进行比较
NullPointerException - 如果指定的元素为空,并且该集合使用自然排序,或者其比较器不允许空元素
public E ceiling(E e)
NavigableSet复制
null 。
ceiling在界面
NavigableSet<E>
e - 要匹配的值
e ,或
null如果没有这样的元素
ClassCastException - 如果指定的元素不能与当前集合中的元素进行比较
NullPointerException - 如果指定的元素为空,并且该集合使用自然排序,或者其比较器不允许空元素
public E higher(E e)
NavigableSet复制
null 。
higher在界面
NavigableSet<E>
e - 要匹配的值
e ,否则
null如果没有这样的元素
ClassCastException - 如果指定的元素不能与当前集合中的元素进行比较
NullPointerException - 如果指定的元素为空,并且该集合使用自然排序,或者其比较器不允许空元素
public E pollFirst()
NavigableSet复制
null 。
pollFirst在接口
NavigableSet<E>
null如果这个集合是空的
public E pollLast()
NavigableSet复制
null 。
pollLast在界面
NavigableSet<E>
null如果该集合为空
public Object clone()
TreeSet实例的浅拷贝。
(元素本身不被克隆。)
public Spliterator<E> spliterator()
Spliterator 。
该Spliterator报告Spliterator.SIZED , Spliterator.DISTINCT , Spliterator.SORTED和Spliterator.ORDERED 。 覆盖实现应记录其他特征值的报告。
该spliterator的比较(见Spliterator.getComparator() )是null如果树集的比较(见comparator() )是null 。 否则,分配器的比较器与树组的比较器相同或者施加相同的总排序。
spliterator在界面
Iterable<E>
spliterator在界面
Collection<E>
spliterator在界面
Set<E>
spliterator在界面
SortedSet<E>
Spliterator在这个集合中的元素
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.