Java TreeSet 介绍
2015-06-05 09:47
531 查看
基于
set 时提供的
此实现为基本操作(
注意,如果要正确实现
set 的观点来看,此方法认为相等的两个元素就是相等的。即使 set 的顺序与 equals 不一致,其行为也是 定义良好的;它只是违背了
注意,此实现不是同步的。如果多个线程同时访问一个 TreeSet,而其中至少一个线程修改了该 set,那么它必须 外部同步。这一般是通过对自然封装该 set 的对象执行同步操作来完成的。如果不存在这样的对象,则应该使用
set。此操作最好在创建时进行,以防止对 set 的意外非同步访问:
此类的
TreeMap的
NavigableSet实现。使用元素的自然顺序对元素进行排序,或者根据创建
set 时提供的
Comparator进行排序,具体取决于使用的构造方法。
此实现为基本操作(
add、
remove和
contains)提供受保证的 log(n) 时间开销。
注意,如果要正确实现
Set接口,则 set 维护的顺序(无论是否提供了显式比较器)必须与 equals 一致。(关于与 equals 一致 的精确定义,请参阅
Comparable或
Comparator。)这是因为
Set接口是按照
equals操作定义的,但
TreeSet实例使用它的
compareTo(或
compare)方法对所有元素进行比较,因此从
set 的观点来看,此方法认为相等的两个元素就是相等的。即使 set 的顺序与 equals 不一致,其行为也是 定义良好的;它只是违背了
Set接口的常规协定。
注意,此实现不是同步的。如果多个线程同时访问一个 TreeSet,而其中至少一个线程修改了该 set,那么它必须 外部同步。这一般是通过对自然封装该 set 的对象执行同步操作来完成的。如果不存在这样的对象,则应该使用
Collections.synchronizedSortedSet方法来“包装”该
set。此操作最好在创建时进行,以防止对 set 的意外非同步访问:
SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));
此类的
iterator方法返回的迭代器是快速失败 的:在创建迭代器之后,如果从结构上对 set 进行修改,除非通过迭代器自身的
remove方法,否则在其他任何时间以任何方式进行修改都将导致迭代器抛出
ConcurrentModificationException。因此,对于并发的修改,迭代器很快就完全失败,而不会冒着在将来不确定的时间发生不确定行为的风险。
构造方法摘要 |
TreeSet() 构造一个新的空 set,该 set 根据其元素的自然顺序进行排序。 |
TreeSet(Collection<? extends E> c) 构造一个包含指定 collection 元素的新 TreeSet,它按照其元素的自然顺序进行排序。 |
TreeSet(Comparator<? super E> comparator) 构造一个新的空 TreeSet,它根据指定比较器进行排序。 |
TreeSet(SortedSet<E> s) 构造一个与指定有序 set 具有相同映射关系和相同排序的新 TreeSet。 |
方法摘要 | |
boolean | add(E e) 将指定的元素添加到此 set(如果该元素尚未存在于 set 中)。 |
boolean | addAll(Collection<? extends E> c) 将指定 collection 中的所有元素添加到此 set 中。 |
E | ceiling(E e) 返回此 set 中大于等于给定元素的最小元素;如果不存在这样的元素,则返回 null。 |
void | clear() 移除此 set 中的所有元素。 |
Object | clone() 返回 TreeSet 实例的浅表副本。 |
Comparator<? super E> | comparator() 返回对此 set 中的元素进行排序的比较器;如果此 set 使用其元素的自然顺序,则返回 null。 |
boolean | contains(Object o) 如果此 set 包含指定的元素,则返回 true。 |
Iterator<E> | descendingIterator() 返回在此 set 元素上按降序进行迭代的迭代器。 |
NavigableSet<E> | descendingSet() 返回此 set 中所包含元素的逆序视图。 |
E | first() 返回此 set 中当前第一个(最低)元素。 |
E | floor(E e) 返回此 set 中小于等于给定元素的最大元素;如果不存在这样的元素,则返回 null。 |
SortedSet<E> | headSet(E toElement) 返回此 set 的部分视图,其元素严格小于 toElement。 |
NavigableSet<E> | headSet(E toElement, boolean inclusive) 返回此 set 的部分视图,其元素小于(或等于,如果 inclusive 为 true)toElement。 |
E | higher(E e) 返回此 set 中严格大于给定元素的最小元素;如果不存在这样的元素,则返回 null。 |
boolean | isEmpty() 如果此 set 不包含任何元素,则返回 true。 |
Iterator<E> | iterator() 返回在此 set 中的元素上按升序进行迭代的迭代器。 |
E | last() 返回此 set 中当前最后一个(最高)元素。 |
E | lower(E e) 返回此 set 中严格小于给定元素的最大元素;如果不存在这样的元素,则返回 null。 |
E | pollFirst() 获取并移除第一个(最低)元素;如果此 set 为空,则返回 null。 |
E | pollLast() 获取并移除最后一个(最高)元素;如果此 set 为空,则返回 null。 |
boolean | remove(Object o) 将指定的元素从 set 中移除(如果该元素存在于此 set 中)。 |
int | size() 返回 set 中的元素数(set 的容量)。 |
NavigableSet<E> | subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) 返回此 set 的部分视图,其元素范围从 fromElement 到 toElement。 |
SortedSet<E> | subSet(E fromElement, E toElement) 返回此 set 的部分视图,其元素从 fromElement(包括)到 toElement(不包括)。 |
SortedSet<E> | tailSet(E fromElement) 返回此 set 的部分视图,其元素大于等于 fromElement。 |
NavigableSet<E> | tailSet(E fromElement, boolean inclusive) 返回此 set 的部分视图,其元素大于(或等于,如果 inclusive 为 true)fromElement。 |
相关文章推荐
- Java中栈的实现
- spring源码程序
- JDK8环境变量的配置
- java下拉框,滚动条
- spring mvc 和junit 4集成的注意点
- Java HashMap 介绍及使用
- Java 反射机制
- 让Eclipse和NetBeans共享同一个项目
- 【转】为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
- java环境变量配置
- java SE 运算符(五)
- java随机数总结
- Java并发编程,并发编程大合集
- Java TreeMap 介绍和使用
- Java DecimalFormat的主要功能及使用方法
- eclipse快捷键汇总
- Myeclipse j2ee版本切换
- 如何在 Google Chrome 浏览器中使用 Java?
- 算法编程(JAVA)--迷宫问题
- java的io操作杂记