Most visited

Recently visited

Added in API level 1

TreeSet

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)时间成本 addremovecontains )。

请注意,如果要正确实现Set接口,则由集合(无论是否提供显式比较器)维护的顺序必须与equals保持一致 (请参见ComparableComparator以获得与等号一致的精确定义。)这是因为Set接口是根据equals操作定义的,但TreeSet实例使用其compareTo (或compare )方法执行所有元素比较,因此两个从这个方法看,被这个方法认为是相等的元素是相等的。 即使排序与等号不一致,集合的行为也是明确定义的; 它只是不服从Set接口的总体合同。

请注意,此实现不同步。 如果多个线程同时访问树集,并且至少有一个线程修改了该集,那么它必须在外部进行同步。 这通常是通过在自然封装集合的某个对象上进行同步来完成的。 如果不存在这样的对象,则该组应该使用Collections.synchronizedSortedSet方法“包装”。 这最好在创建时完成,以防止意外的非同步访问:

   SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));

这个类的iterator方法返回的迭代器是快速失败的 :如果在迭代器创建后随时修改集合,除了通过迭代器自己的remove方法之外,迭代器将抛出ConcurrentModificationException 因此,面对并发修改,迭代器快速而干净地失败,而不是在将来某个未确定的时间冒着任意的,非确定性的行为风险。

请注意,迭代器的故障快速行为无法得到保证,因为一般来说,在存在非同步并发修改的情况下不可能做出任何硬性保证。 失败快速迭代器以尽力而为的方式抛出ConcurrentModificationException 因此,编写一个依赖于此异常的程序是正确的: 迭代器的快速失败行为应仅用于检测错误。

本课是 Java Collections Framework的成员。

也可以看看:

Summary

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)

返回此集合中大于或等于给定元素的 null元素,如果不存在此元素,则 null

void clear()

删除此组中的所有元素。

Object clone()

返回此 TreeSet实例的浅表副本。

Comparator<? super E> comparator()

返回用于如果此set使用命令在该组中的元素,或 null比较 natural ordering的元素。

boolean contains(Object o)

如果此集合包含指定的元素,则返回 true

Iterator<E> descendingIterator()

以降序返回此集合中元素的迭代器。

NavigableSet<E> descendingSet()

返回此集合中包含的元素的逆序视图。

E first()

返回当前在这个集合中的第一个(最低)元素。

E floor(E e)

返回此集合中小于或等于给定元素的最大元素,如果不存在此元素,则 null

NavigableSet<E> headSet(E toElement, boolean inclusive)

返回此集合中元素小于(或等于,如果 inclusive为true) toElement

SortedSet<E> headSet(E toElement)

返回此元素严格小于 toElement的部分视图。

相当于 headSet(toElement, false)

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)

返回此集合中元素范围从 fromElementtoElement的部分视图。

SortedSet<E> subSet(E fromElement, E toElement)

返回此集合中元素范围从 fromElement (包括 toElement )到 toElement (独占)的部分视图。

相当于 subSet(fromElement, true, toElement, false)

NavigableSet<E> tailSet(E fromElement, boolean inclusive)

返回此集合的元素大于(或等于,如果 inclusive为true) fromElement

SortedSet<E> tailSet(E fromElement)

返回该元素大于或等于 fromElement的部分视图。

相当于 tailSet(fromElement, true)

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

Public constructors

TreeSet

Added in API level 1
TreeSet ()

构造一个新的空树集合,根据元素的自然排序进行排序。 插入到集合中的所有元素必须实现Comparable接口。 此外,所有这些元素都必须相互可比e1.compareTo(e2)不得ClassCastException中的任何元素e1e2抛出ClassCastException 如果用户尝试向违反此约束的集合添加元素(例如,用户尝试将字符串元素添加到元素为整数的集合),则add调用将抛出ClassCastException

TreeSet

Added in API level 1
TreeSet (Comparator<? super E> comparator)

构造一个新的空树集合,根据指定的比较器进行排序。 插入到集合中的所有元素必须通过指定的比较器相互比较: comparator.compare(e1, e2)不得ClassCastException中的任何元素e1e2 如果用户尝试向违反此限制的集合添加元素,则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

Added in API level 1
TreeSet (Collection<? extends E> c)

构造一个新的树集,其中包含指定集合中的元素,并根据元素的自然顺序进行排序 插入到集合中的所有元素必须实现Comparable接口。 此外,所有这些元素必须相互可比e1.compareTo(e2)不得ClassCastException中的任何元素e1e2

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

Added in API level 1
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

Public methods

add

Added in API level 1
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

addAll

Added in API level 1
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

ceiling

Added in API level 9
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

clear

Added in API level 1
void clear ()

删除此组中的所有元素。 此通话返回后,该设置将为空。

clone

Added in API level 1
Object clone ()

返回此TreeSet实例的浅表副本。 (元素本身没有被克隆。)

Returns
Object a shallow copy of this set

comparator

Added in API level 1
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

contains

Added in API level 1
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

descendingIterator

Added in API level 9
Iterator<E> descendingIterator ()

以降序返回此集合中元素的迭代器。

Returns
Iterator<E> an iterator over the elements in this set in descending order

descendingSet

Added in API level 9
NavigableSet<E> descendingSet ()

返回此集合中包含的元素的逆序视图。 降序集由该集支持,因此对集的更改反映在降序集中,反之亦然。 如果两个集合中的任何一个在迭代过程中被修改(除了通过迭代器自己的remove操作),迭代的结果是未定义的。

返回的集合的订购等同于Collections.reverseOrder (comparator()) 表达s.descendingSet().descendingSet()返回一个视图的s实质上等同于s

Returns
NavigableSet<E> a reverse order view of this set

first

Added in API level 1
E first ()

返回当前在这个集合中的第一个(最低)元素。

Returns
E the first (lowest) element currently in this set
Throws
NoSuchElementException

floor

Added in API level 9
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

headSet

Added in API level 9
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

headSet

Added in API level 1
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

higher

Added in API level 9
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

isEmpty

Added in API level 1
boolean isEmpty ()

如果此集合不包含元素,则返回 true

Returns
boolean true if this set contains no elements

iterator

Added in API level 1
Iterator<E> iterator ()

以升序返回此集合中元素的迭代器。

Returns
Iterator<E> an iterator over the elements in this set in ascending order

last

Added in API level 1
E last ()

返回当前在这个集合中的最后(最高)元素。

Returns
E the last (highest) element currently in this set
Throws
NoSuchElementException

lower

Added in API level 9
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

pollFirst

Added in API level 9
E pollFirst ()

检索并删除第一个(最低)元素,如果此集合为空,则返回 null

Returns
E the first element, or null if this set is empty

pollLast

Added in API level 9
E pollLast ()

检索并删除最后一个(最高)元素,如果此集合为空,则返回 null

Returns
E the last element, or null if this set is empty

remove

Added in API level 1
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

size

Added in API level 1
int size ()

返回此集合中元素的数量(基数)。

Returns
int the number of elements in this set (its cardinality)

spliterator

Added in API level 24
Spliterator<E> spliterator ()

创建一个 late-binding快速故障 Spliterator覆盖此组中的元素。

Spliterator报告SIZEDDISTINCTSORTED ,并ORDERED 重写实现应记录附加特征值的报告。

该spliterator的比较(见getComparator() )是null如果树集的比较(见comparator() )是null 否则,分割器的比较器与树集的比较器相同或者施加相同的总排序。

Returns
Spliterator<E> a Spliterator over the elements in this set

subSet

Added in API level 9
NavigableSet<E> subSet (E fromElement, 
                boolean fromInclusive, 
                E toElement, 
                boolean toInclusive)

返回此集合中元素范围从fromElementtoElement的部分视图。 如果fromElementtoElement相等,则返回的集合为空,除非fromInclusivetoInclusive均为真。 返回的集合由此集合支持,因此返回集合中的更改将反映在此集合中,反之亦然。 返回的集合支持此集合支持的所有可选集操作。

返回的集合将抛出 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

subSet

Added in API level 1
SortedSet<E> subSet (E fromElement, 
                E toElement)

返回此集合的部分视图,其元素范围从fromElement (含)到toElement (独占)。 (如果fromElementtoElement相等,则返回的集合是空的。)返回的集合由此集合支持,因此返回的集合中的更改将反映在此集合中,反之亦然。 返回的集合支持此集合支持的所有可选集操作。

返回的集合将抛出 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

tailSet

Added in API level 9
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

tailSet

Added in API level 1
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

Hooray!