简介
-
public class TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>, Cloneable, Serializable
- 一个
NavigableSet
实现基于一个TreeMap
。 的元件使用其有序natural ordering ,或由Comparator
集合创建时提供,这取决于所使用的构造方法。此实现提供了基本的操作(保证的log(n)时间成本
add
,remove
和contains
)。 -
请注意,如果要正确实现
Set
接口,则由集合维护的排序(无论是否提供显式比较器)必须与equals一致 。 (有关与equals一致的精确定义,请参阅Comparable
或Comparator
)这是因为Set
接口是根据equals
操作定义的,但是TreeSet
实例使用其compareTo
(或compare
)方法执行所有元素比较,因此从该集合的角度来看,通过这种方法被认为相等的元素是相等的。 一套的行为是明确的,即使它的排序和equals不一致; 它只是没有遵守Set
接口的一般合同。 -
请注意,此实现不同步。 如果多个线程同时访问树集,并且至少有一个线程修改了该集,则必须在外部进行同步。 这通常通过在自然封装集合的某个对象上进行同步来实现。 如果不存在此类对象,则应使用
Collections.synchronizedSortedSet
方法“包装”该集合 。 这最好在创建时完成,以防止对集合的意外不同步访问:SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));
-
此类的
iterator
方法返回的迭代器是快速失败的 :如果在创建迭代器之后的任何时间修改集合,除了通过迭代器自己的remove
方法之外,迭代器将抛出ConcurrentModificationException
。 因此,在并发修改的情况下,迭代器快速而干净地失败,而不是在未来的未确定时间冒任意,非确定性行为的风险。
方法摘要
构造器 | 描述 |
---|---|
TreeSet() | 构造一个新的空树集,根据其元素的自然顺序进行排序。 |
TreeSet(Collection<? extends E> c) | 构造一个新的树集,其中包含指定集合中的元素,并根据其元素的 自然顺序进行排序 。 |
TreeSet(Comparator<? super E> comparator) | 构造一个新的空树集,根据指定的比较器进行排序。 |
TreeSet(SortedSet<E> s) | 构造一个包含相同元素并使用与指定有序集相同排序的新树集。 |
变量和类型 | 方法 | 描述 |
---|---|---|
boolean | add(E e) | 如果指定的元素尚不存在,则将其添加到此集合中。 |
boolean | addAll(Collection<? extends E> c) | 将指定集合中的所有元素添加到此集合中。 |
E | ceiling(E e) | 返回此set中大于或等于给定元素的 |
void | clear() | 从该集中删除所有元素。 |
Object | clone() | 返回此 |
boolean | contains(Object o) | 如果此set包含指定的元素,则返回 |
Iterator<E> | descendingIterator() | 以降序返回此集合中元素的迭代器。 |
NavigableSet<E> | descendingSet() | 返回此set中包含的元素的逆序视图。 |
E | first() | 返回此集合中当前的第一个(最低)元素。 |
E | floor(E e) | 返回此set中小于或等于给定元素的最大元素,如果没有这样的元素,则 |
SortedSet<E> | headSet(E toElement) | 返回此set的部分视图,其元素严格小于 |
NavigableSet<E> | headSet(E toElement, boolean inclusive) | 返回此set的部分视图,其元素小于(或等于,如果 |
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) | 返回此set的部分视图,其元素范围为 |
SortedSet<E> | subSet(E fromElement, E toElement) | 返回此set的部分视图,其元素范围从 |
SortedSet<E> | tailSet(E fromElement) | 返回此set的部分视图,其元素大于或等于 |
NavigableSet<E> | tailSet(E fromElement, boolean inclusive) | 返回此set的部分视图,其元素大于(或等于,如果 |
自定义数据类型的排序(实现comparable接口)
与集合中某个对象年龄相同的对象无法存进去