- 类型参数:
E- 此集合维护的元素类型
- 所有已实现的接口:
Serializable,Cloneable,Iterable<E>,Collection<E>,NavigableSet<E>,Set<E>,SortedSet<E>
TreeMap 的 NavigableSet 实现。这些元素使用它们的 自然排序 排序,或者通过在集合创建时提供的 Comparator 排序,具体取决于使用的构造函数。
此实现为基本操作(add、remove 和 contains)提供有保证的 log(n) 时间成本。
请注意,集合维护的顺序(无论是否提供显式比较器)必须是一致如果是正确实现Set接口。 (有关的精确定义,请参阅 Comparable 或 Comparator一致.) 之所以如此,是因为 Set 接口是根据 equals 操作定义的,但是 TreeSet 实例使用其 compareTo (或 compare )方法执行所有元素比较,因此从角度来看,此方法认为两个元素相等的集合,相等。集合的行为是定义明确,即使其顺序与 equals 不一致;它只是不遵守 Set 接口的一般合同。
请注意,此实现不是同步的。 如果多个线程同时访问一个树集,并且至少有一个线程修改了该集,它必须外部同步。这通常是通过同步一些自然封装集合的对象来实现的。如果不存在这样的对象,则应使用 Collections.synchronizedSortedSet 方法“包装”该集合。这最好在创建时完成,以防止意外的不同步访问集合:
SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));
此类的 iterator 方法返回的迭代器是快速失败:如果在创建迭代器后的任何时间以任何方式修改集合,除了通过迭代器自己的 remove 方法,迭代器将抛出一个 ConcurrentModificationException 。因此,面对并发修改,迭代器会快速干净地失败,而不是冒着在未来不确定的时间出现任意的、不确定的行为的风险。
请注意,无法保证迭代器的快速失败行为,因为一般来说,在存在非同步并发修改的情况下不可能做出任何硬性保证。快速失败迭代器会尽最大努力抛出 ConcurrentModificationException。因此,编写依赖于此异常的正确性的程序是错误的:迭代器的快速失败行为应该只用于检测错误。
此类是 Java 集合框架 的成员。
- 自从:
- 1.2
- 参见:
-
构造方法总结
构造方法构造方法描述TreeSet()构造一个新的空树集,根据其元素的自然顺序进行排序。TreeSet(Collection<? extends E> c) 构造一个新的树集,包含指定集合中的元素,按照自然排序它的元素。TreeSet(Comparator<? super E> comparator) 构造一个新的空树集,根据指定的比较器排序。构造一个包含相同元素并使用与指定排序集相同顺序的新树集。 -
方法总结
修饰符和类型方法描述boolean如果指定的元素不存在,则将其添加到此集合中。booleanaddAll(Collection<? extends E> c) 将指定集合中的所有元素添加到此集合。返回此集合中大于或等于给定元素的最小元素,如果没有这样的元素,则返回null。voidclear()从此集合中删除所有元素。clone()返回此TreeSet实例的浅表副本。Comparator<? super E>返回用于对该集合中的元素进行排序的比较器,如果该集合使用其元素的 自然排序,则返回null。boolean如果此集合包含指定元素,则返回true。按降序返回此集合中元素的迭代器。返回此集合中包含的元素的倒序视图。first()返回此集合中当前的第一个(最低)元素。返回此集合中小于或等于给定元素的最大元素,如果没有这样的元素,则返回null。返回此集合中元素严格小于toElement的部分的视图。返回此集合的部分视图,其元素小于(或等于,如果inclusive为真)toElement。返回此集合中严格大于给定元素的最小元素,如果没有这样的元素,则返回null。booleanisEmpty()如果此集合不包含任何元素,则返回true。iterator()按升序返回此集合中元素的迭代器。last()返回此集合中当前的最后一个(最高)元素。返回此集合中严格小于给定元素的最大元素,如果没有这样的元素,则返回null。检索并删除第一个(最低)元素,如果此集合为空,则返回null。pollLast()检索并删除最后一个(最高)元素,如果此集合为空,则返回null。boolean如果存在,则从此集合中移除指定元素。intsize()返回此集合中的元素数(其基数)。在此集合中的元素上创建 late-binding 和 fail-fastSpliterator。返回此集合的部分视图,其元素范围从fromElement到toElement。返回此集合的部分视图,其元素范围从fromElement(含)到toElement(不含)。返回此集合中元素大于或等于fromElement的部分的视图。返回此集合的部分视图,其元素大于(或等于,如果inclusive为真)fromElement。在类 java.util.AbstractSet 中声明的方法
equals, hashCode, removeAll在类 java.util.AbstractCollection 中声明的方法
containsAll, retainAll, toArray, toArray, toString在接口 java.util.Collection 中声明的方法
parallelStream, removeIf, stream, toArray
-
构造方法详细信息
-
TreeSet
public TreeSet()构造一个新的空树集,根据其元素的自然顺序进行排序。插入集合中的所有元素都必须实现Comparable接口。此外,所有这些元素必须是相互比较e1.compareTo(e2)不得为集合中的任何元素e1和e2抛出ClassCastException。如果用户试图将一个元素添加到违反此约束的集合中(例如,用户尝试将一个字符串元素添加到一个元素为整数的集合中),add调用将抛出一个ClassCastException。 -
TreeSet
构造一个新的空树集,根据指定的比较器排序。插入集合中的所有元素必须是相互比较通过指定的比较器:comparator.compare(e1, e2)不得为集合中的任何元素e1和e2抛出ClassCastException。如果用户试图向集合中添加一个违反此约束的元素,add调用将抛出一个ClassCastException。- 参数:
comparator- 将用于订购此集合的比较器。如果是null,将使用元素的 自然排序 。
-
TreeSet
构造一个新的树集,包含指定集合中的元素,按照自然排序它的元素。插入集合中的所有元素都必须实现Comparable接口。此外,所有这些元素必须是相互比较e1.compareTo(e2)不得为集合中的任何元素e1和e2抛出ClassCastException。- 参数:
c- 其元素将构成新集合的集合- 抛出:
ClassCastException- 如果c中的元素不是Comparable,或者不可相互比较NullPointerException- 如果指定的集合为空
-
TreeSet
构造一个包含相同元素并使用与指定排序集相同顺序的新树集。- 参数:
s- 其元素将组成新集合的有序集合- 抛出:
NullPointerException- 如果指定的排序集为空
-
-
方法详情
-
iterator
按升序返回此集合中元素的迭代器。- 指定者:
iterator在接口Collection<E>中- 指定者:
iterator在接口Iterable<E>中- 指定者:
iterator在接口NavigableSet<E>中- 指定者:
iterator在接口Set<E>中- 指定者:
iterator在类AbstractCollection<E>中- 返回:
- 按升序迭代此 set 中的元素的迭代器
-
descendingIterator
按降序返回此集合中元素的迭代器。- 指定者:
descendingIterator在接口NavigableSet<E>中- 返回:
- 按降序对该集合中的元素进行迭代
- 自从:
- 1.6
-
descendingSet
从接口NavigableSet复制的描述返回此集合中包含的元素的倒序视图。降序集由该集支持,因此对该集的更改会反映在降序集中,反之亦然。如果在对任一集合进行迭代时修改了任一集合(通过迭代器自己的remove操作除外),则迭代的结果是未定义的。返回的集合的排序等同于
Collections.reverseOrder(comparator())。表达式s.descendingSet().descendingSet()返回s的视图,本质上等同于s。- 指定者:
descendingSet在接口NavigableSet<E>中- 返回:
- 该集合的逆序视图
- 自从:
- 1.6
-
size
public int size()返回此集合中的元素数(其基数)。 -
isEmpty
public boolean isEmpty()如果此集合不包含任何元素,则返回true。- 指定者:
isEmpty在接口Collection<E>中- 指定者:
isEmpty在接口Set<E>中- 重写:
isEmpty在类AbstractCollection<E>中- 返回:
true如果这个集合不包含任何元素
-
contains
如果此集合包含指定元素,则返回true。更正式地说,返回true当且仅当此集合包含元素e使得Objects.equals(o, e)。- 指定者:
contains在接口Collection<E>中- 指定者:
contains在接口Set<E>中- 重写:
contains在类AbstractCollection<E>中- 参数:
o- 要检查此集合中包含的对象- 返回:
true如果此集合包含指定元素- 抛出:
ClassCastException- 如果无法将指定对象与当前集合中的元素进行比较NullPointerException- 如果指定元素为 null 且此集合使用自然顺序,或者其比较器不允许 null 元素
-
add
如果指定的元素不存在,则将其添加到此集合中。更正式地说,如果集合不包含满足Objects.equals(e, e2)的元素e2,则将指定元素e添加到该集合。如果此集合已包含该元素,则调用保持集合不变并返回false。- 指定者:
add在接口Collection<E>中- 指定者:
add在接口Set<E>中- 重写:
add在类AbstractCollection<E>中- 参数:
e- 要添加到此集合的元素- 返回:
true如果此集合尚未包含指定元素- 抛出:
ClassCastException- 如果无法将指定对象与当前集合中的元素进行比较NullPointerException- 如果指定元素为 null 且此集合使用自然顺序,或者其比较器不允许 null 元素
-
remove
如果存在,则从此集合中移除指定元素。更正式地说,删除元素e这样Objects.equals(o, e)如果此集合包含这样的元素。如果此集合包含该元素,则返回true(或者等效地,如果此集合因调用而更改)。 (一旦调用返回,此集合将不包含该元素。)- 指定者:
remove在接口Collection<E>中- 指定者:
remove在接口Set<E>中- 重写:
remove在类AbstractCollection<E>中- 参数:
o- 要从此集合中删除的对象(如果存在)- 返回:
true如果这个集合包含指定的元素- 抛出:
ClassCastException- 如果无法将指定对象与当前集合中的元素进行比较NullPointerException- 如果指定元素为 null 且此集合使用自然顺序,或者其比较器不允许 null 元素
-
clear
public void clear()从此集合中删除所有元素。此调用返回后该集合将为空。- 指定者:
clear在接口Collection<E>中- 指定者:
clear在接口Set<E>中- 重写:
clear在类AbstractCollection<E>中
-
addAll
将指定集合中的所有元素添加到此集合。- 指定者:
addAll在接口Collection<E>中- 指定者:
addAll在接口Set<E>中- 重写:
addAll在类AbstractCollection<E>中- 参数:
c- 包含要添加到此集合的元素的集合- 返回:
true如果此集合因调用而更改- 抛出:
ClassCastException- 如果提供的元素无法与集合中当前的元素进行比较NullPointerException- 如果指定集合为 null 或任何元素为 null 并且此集合使用自然排序,或者其比较器不允许 null 元素- 参见:
-
subSet
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如果低端点要包含在返回的视图中toElement- 返回集的高端点toInclusive-true如果高端点要包含在返回的视图中- 返回:
-
该集合的部分视图,其元素范围从
fromElement(含)到toElement(不含) - 抛出:
ClassCastException- 如果fromElement和toElement无法使用该集合的比较器相互比较(或者,如果该集合没有比较器,则使用自然排序)。如果无法将fromElement或toElement与当前集合中的元素进行比较,实现可能会(但不是必须)抛出此异常。NullPointerException- 如果fromElement或toElement为空且此集合使用自然顺序,或者其比较器不允许空元素IllegalArgumentException- 如果fromElement大于toElement;或者如果这个集合本身有一个限制范围,并且fromElement或toElement位于范围的边界之外。- 自从:
- 1.6
-
headSet
从接口NavigableSet复制的描述返回此集合的部分视图,其元素小于(或等于,如果inclusive为真)toElement。返回的集合受此集合的支持,因此返回集合中的更改会反映在此集合中,反之亦然。返回的集合支持该集合支持的所有可选集合操作。返回的集合将在尝试插入其范围之外的元素时抛出
IllegalArgumentException。- 指定者:
headSet在接口NavigableSet<E>中- 参数:
toElement- 返回集的高端点inclusive-true如果高端点要包含在返回的视图中- 返回:
-
该集合的部分视图,其元素小于(或等于,如果
inclusive为真)toElement - 抛出:
ClassCastException- 如果toElement与该集合的比较器不兼容(或者,如果该集合没有比较器,如果toElement未实现Comparable)。如果无法将toElement与集合中的当前元素进行比较,则实现可能会(但不是必须)抛出此异常。NullPointerException- 如果toElement为 null 且此集合使用自然顺序,或者其比较器不允许 null 元素IllegalArgumentException- 如果这个集合本身有一个限制范围,并且toElement位于范围的边界之外- 自从:
- 1.6
-
tailSet
从接口NavigableSet复制的描述返回此集合的部分视图,其元素大于(或等于,如果inclusive为真)fromElement。返回的集合受此集合的支持,因此返回集合中的更改会反映在此集合中,反之亦然。返回的集合支持该集合支持的所有可选集合操作。返回的集合将在尝试插入其范围之外的元素时抛出
IllegalArgumentException。- 指定者:
tailSet在接口NavigableSet<E>中- 参数:
fromElement- 返回集的低端点inclusive-true如果低端点要包含在返回的视图中- 返回:
-
该集合的元素大于或等于
fromElement的部分的视图 - 抛出:
ClassCastException- 如果fromElement与该集合的比较器不兼容(或者,如果该集合没有比较器,如果fromElement未实现Comparable)。如果fromElement无法与集合中当前的元素进行比较,实现可能会(但不是必须)抛出此异常。NullPointerException- 如果fromElement为 null 且此集合使用自然顺序,或者其比较器不允许 null 元素IllegalArgumentException- 如果这个集合本身有一个限制范围,并且fromElement位于范围的边界之外- 自从:
- 1.6
-
subSet
从接口NavigableSet复制的描述返回此集合的部分视图,其元素范围从fromElement(含)到toElement(不含)。 (如果fromElement和toElement相等,则返回的集合为空。)返回的集合受此集合的支持,因此返回集合中的更改会反映在此集合中,反之亦然。返回的集合支持该集合支持的所有可选集合操作。返回的集合将在尝试插入其范围之外的元素时抛出
IllegalArgumentException。相当于
subSet(fromElement, true, toElement, false)。- 指定者:
subSet在接口NavigableSet<E>中- 指定者:
subSet在接口SortedSet<E>中- 参数:
fromElement- 返回集的低端点(含)toElement- 返回集的高端点(不包括)- 返回:
-
该集合的部分视图,其元素范围从
fromElement(含)到toElement(不含) - 抛出:
ClassCastException- 如果fromElement和toElement无法使用该集合的比较器相互比较(或者,如果该集合没有比较器,则使用自然排序)。如果无法将fromElement或toElement与当前集合中的元素进行比较,实现可能会(但不是必须)抛出此异常。NullPointerException- 如果fromElement或toElement为空且此集合使用自然顺序,或者其比较器不允许空元素IllegalArgumentException- 如果fromElement大于toElement;或者如果这个集合本身有一个限制范围,并且fromElement或toElement位于范围的边界之外
-
headSet
从接口NavigableSet复制的描述返回此集合中元素严格小于toElement的部分的视图。返回的集合受此集合的支持,因此返回集合中的更改会反映在此集合中,反之亦然。返回的集合支持该集合支持的所有可选集合操作。返回的集合将在尝试插入其范围之外的元素时抛出
IllegalArgumentException。相当于
headSet(toElement, false)。- 指定者:
headSet在接口NavigableSet<E>中- 指定者:
headSet在接口SortedSet<E>中- 参数:
toElement- 返回集的高端点(不包括)- 返回:
-
该集合中元素严格小于
toElement的部分的视图 - 抛出:
ClassCastException- 如果toElement与该集合的比较器不兼容(或者,如果该集合没有比较器,如果toElement未实现Comparable)。如果无法将toElement与集合中的当前元素进行比较,则实现可能会(但不是必须)抛出此异常。NullPointerException- 如果toElement为 null 且此集合使用自然顺序,或者其比较器不允许 null 元素IllegalArgumentException- 如果这个集合本身有一个限制范围,并且toElement位于范围的边界之外
-
tailSet
从接口NavigableSet复制的描述返回此集合中元素大于或等于fromElement的部分的视图。返回的集合受此集合的支持,因此返回集合中的更改会反映在此集合中,反之亦然。返回的集合支持该集合支持的所有可选集合操作。返回的集合将在尝试插入其范围之外的元素时抛出
IllegalArgumentException。相当于
tailSet(fromElement, true)。- 指定者:
tailSet在接口NavigableSet<E>中- 指定者:
tailSet在接口SortedSet<E>中- 参数:
fromElement- 返回集的低端点(含)- 返回:
-
该集合的元素大于或等于
fromElement的部分的视图 - 抛出:
ClassCastException- 如果fromElement与该集合的比较器不兼容(或者,如果该集合没有比较器,如果fromElement未实现Comparable)。如果fromElement无法与集合中当前的元素进行比较,实现可能会(但不是必须)抛出此异常。NullPointerException- 如果fromElement为 null 且此集合使用自然顺序,或者其比较器不允许 null 元素IllegalArgumentException- 如果这个集合本身有一个限制范围,并且fromElement位于范围的边界之外
-
comparator
从接口SortedSet复制的描述返回用于对该集合中的元素进行排序的比较器,如果该集合使用其元素的 自然排序,则返回null。- 指定者:
comparator在接口SortedSet<E>中- 返回:
-
用于对该集合中的元素进行排序的比较器,或者
null如果该集合使用其元素的自然排序
-
first
从接口SortedSet复制的描述返回此集合中当前的第一个(最低)元素。- 指定者:
first在接口SortedSet<E>中- 返回:
- 此集合中当前的第一个(最低)元素
- 抛出:
NoSuchElementException- 如果这个集合是空的
-
last
从接口SortedSet复制的描述返回此集合中当前的最后一个(最高)元素。- 指定者:
last在接口SortedSet<E>中- 返回:
- 该集合中当前的最后一个(最高)元素
- 抛出:
NoSuchElementException- 如果这个集合是空的
-
lower
从接口NavigableSet复制的描述返回此集合中严格小于给定元素的最大元素,如果没有这样的元素,则返回null。- 指定者:
lower在接口NavigableSet<E>中- 参数:
e- 要匹配的值- 返回:
-
小于
e的最大元素,或者null如果没有这样的元素 - 抛出:
ClassCastException- 如果无法将指定元素与当前集合中的元素进行比较NullPointerException- 如果指定元素为 null 且此集合使用自然顺序,或者其比较器不允许 null 元素- 自从:
- 1.6
-
floor
从接口NavigableSet复制的描述返回此集合中小于或等于给定元素的最大元素,如果没有这样的元素,则返回null。- 指定者:
floor在接口NavigableSet<E>中- 参数:
e- 要匹配的值- 返回:
-
小于或等于
e的最大元素,如果没有这样的元素,则为null - 抛出:
ClassCastException- 如果无法将指定元素与当前集合中的元素进行比较NullPointerException- 如果指定元素为 null 且此集合使用自然顺序,或者其比较器不允许 null 元素- 自从:
- 1.6
-
ceiling
从接口NavigableSet复制的描述返回此集合中大于或等于给定元素的最小元素,如果没有这样的元素,则返回null。- 指定者:
ceiling在接口NavigableSet<E>中- 参数:
e- 要匹配的值- 返回:
-
大于或等于
e的最小元素,如果没有这样的元素,则为null - 抛出:
ClassCastException- 如果无法将指定元素与当前集合中的元素进行比较NullPointerException- 如果指定元素为 null 且此集合使用自然顺序,或者其比较器不允许 null 元素- 自从:
- 1.6
-
higher
从接口NavigableSet复制的描述返回此集合中严格大于给定元素的最小元素,如果没有这样的元素,则返回null。- 指定者:
higher在接口NavigableSet<E>中- 参数:
e- 要匹配的值- 返回:
-
大于
e的最小元素,如果没有这样的元素,则为null - 抛出:
ClassCastException- 如果无法将指定元素与当前集合中的元素进行比较NullPointerException- 如果指定元素为 null 且此集合使用自然顺序,或者其比较器不允许 null 元素- 自从:
- 1.6
-
pollFirst
从接口NavigableSet复制的描述检索并删除第一个(最低)元素,如果此集合为空,则返回null。- 指定者:
pollFirst在接口NavigableSet<E>中- 返回:
-
第一个元素,或
null如果此集合为空 - 自从:
- 1.6
-
pollLast
从接口NavigableSet复制的描述检索并删除最后一个(最高)元素,如果此集合为空,则返回null。- 指定者:
pollLast在接口NavigableSet<E>中- 返回:
-
最后一个元素,或
null如果此集合为空 - 自从:
- 1.6
-
clone
返回此TreeSet实例的浅表副本。 (元素本身不会被克隆。) -
spliterator
在此集合中的元素上创建 late-binding 和 fail-fastSpliterator。Spliterator报告Spliterator.SIZED、Spliterator.DISTINCT、Spliterator.SORTED和Spliterator.ORDERED。覆盖实施应记录附加特征值的报告。如果树集的比较器(参见
comparator())为null,则拆分器的比较器(参见Spliterator.getComparator())为null。否则,拆分器的比较器与树集的比较器相同或强加相同的总排序。- 指定者:
spliterator在接口Collection<E>中- 指定者:
spliterator在接口Iterable<E>中- 指定者:
spliterator在接口Set<E>中- 指定者:
spliterator在接口SortedSet<E>中- 返回:
-
a
Spliterator覆盖此集合中的元素 - 自从:
- 1.8
-