- 类型参数:
E- 此集合维护的元素类型
- 所有已实现的接口:
Serializable,Cloneable,Iterable<E>,Collection<E>,NavigableSet<E>,Set<E>,SortedSet<E>
ConcurrentSkipListMap 的可扩展并发 NavigableSet 实现。集合的元素根据它们的 自然排序 或集合创建时提供的 Comparator 进行排序,具体取决于使用的构造函数。
此实现提供了预期的平均值log(n)contains、add 和 remove 操作及其变体的时间成本。插入、删除和访问操作由多个线程安全地并发执行。
迭代器和拆分器是 弱一致 。
升序视图及其迭代器比降序视图更快。
请注意,与大多数集合不同,size 方法是 not 恒定时间操作。由于这些集合的异步特性,确定当前元素数量需要遍历元素,因此如果在遍历期间修改此集合,则可能会报告不准确的结果。
添加、删除或检查多个元素的批量操作,例如 AbstractCollection.addAll(java.util.Collection<? extends E>) 、Collection.removeIf(java.util.function.Predicate<? super E>) 或 Iterable.forEach(java.util.function.Consumer<? super T>) ,not 保证以原子方式执行。例如,与 addAll 操作并发的 forEach 遍历可能只会观察到一些添加的元素。
此类及其迭代器实现了 Set 和 Iterator 接口的所有 optional 方法。与大多数其他并发集合实现一样,此类不允许使用 null 元素,因为无法可靠地区分 null 参数和返回值与元素的缺失。
此类是 Java 集合框架 的成员。
- 自从:
- 1.6
- 参见:
-
构造方法总结
构造方法构造方法描述构造一个新的空集,根据元素的 自然排序 对其元素进行排序。ConcurrentSkipListSet(Collection<? extends E> c) 构造一个新集合,其中包含指定集合中的元素,并根据元素的 自然排序 对其元素进行排序。ConcurrentSkipListSet(Comparator<? super E> comparator) 构造一个新的空集,该集根据指定的比较器对其元素进行排序。构造一个包含相同元素并使用与指定排序集相同顺序的新集。 -
方法总结
修饰符和类型方法描述boolean如果指定的元素不存在,则将其添加到此集合中。返回此集合中大于或等于给定元素的最小元素,如果没有这样的元素,则返回null。voidclear()从此集合中删除所有元素。clone()返回此ConcurrentSkipListSet实例的浅表副本。Comparator<? super E>返回用于对该集合中的元素进行排序的比较器,如果该集合使用其元素的 自然排序,则返回null。boolean如果此集合包含指定元素,则返回true。按降序返回此集合中元素的迭代器。返回此集合中包含的元素的倒序视图。boolean比较指定对象与此集合是否相等。first()返回此集合中当前的第一个(最低)元素。返回此集合中小于或等于给定元素的最大元素,如果没有这样的元素,则返回null。返回此集合中元素严格小于toElement的部分的视图。返回此集合的部分视图,其元素小于(或等于,如果inclusive为真)toElement。返回此集合中严格大于给定元素的最小元素,如果没有这样的元素,则返回null。booleanisEmpty()如果此集合不包含任何元素,则返回true。iterator()按升序返回此集合中元素的迭代器。last()返回此集合中当前的最后一个(最高)元素。返回此集合中严格小于给定元素的最大元素,如果没有这样的元素,则返回null。检索并删除第一个(最低)元素,如果此集合为空,则返回null。pollLast()检索并删除最后一个(最高)元素,如果此集合为空,则返回null。boolean如果存在,则从此集合中移除指定元素。booleanremoveAll(Collection<?> c) 从此集合中移除指定集合中包含的所有元素。intsize()返回此集合中的元素数。返回此集合中元素的Spliterator。返回此集合的部分视图,其元素范围从fromElement到toElement。返回此集合的部分视图,其元素范围从fromElement(含)到toElement(不含)。返回此集合中元素大于或等于fromElement的部分的视图。返回此集合的部分视图,其元素大于(或等于,如果inclusive为真)fromElement。在类 java.util.AbstractSet 中声明的方法
hashCode在类 java.util.AbstractCollection 中声明的方法
addAll, containsAll, retainAll, toArray, toArray, toString在接口 java.util.Collection 中声明的方法
parallelStream, removeIf, stream, toArray
-
构造方法详细信息
-
ConcurrentSkipListSet
public ConcurrentSkipListSet()构造一个新的空集,根据元素的 自然排序 对其元素进行排序。 -
ConcurrentSkipListSet
构造一个新的空集,该集根据指定的比较器对其元素进行排序。- 参数:
comparator- 将用于订购此集合的比较器。如果null,将使用元素的 自然排序。
-
ConcurrentSkipListSet
构造一个新集合,其中包含指定集合中的元素,并根据元素的 自然排序 对其元素进行排序。- 参数:
c- 将构成新集合的元素- 抛出:
ClassCastException- 如果c中的元素不是Comparable,或者不可相互比较NullPointerException- 如果指定的集合或其任何元素为空
-
ConcurrentSkipListSet
构造一个包含相同元素并使用与指定排序集相同顺序的新集。- 参数:
s- 其元素将组成新集合的有序集合- 抛出:
NullPointerException- 如果指定的排序集或其任何元素为空
-
-
方法详情
-
clone
返回此ConcurrentSkipListSet实例的浅表副本。 (元素本身不会被克隆。) -
size
public int size()返回此集合中的元素数。如果此集合包含超过Integer.MAX_VALUE个元素,则返回Integer.MAX_VALUE。请注意,与大多数集合不同,此方法是 NOT 恒定时间操作。由于这些集合的异步性质,确定当前元素的数量需要遍历它们来计算它们。另外,在该方法执行过程中,size可能会发生变化,返回的结果会不准确。因此,这种方法在并发应用程序中通常不是很有用。
-
isEmpty
public boolean isEmpty()如果此集合不包含任何元素,则返回true。- 指定者:
isEmpty在接口Collection<E>中- 指定者:
isEmpty在接口Set<E>中- 重写:
isEmpty在类AbstractCollection<E>中- 返回:
true如果这个集合不包含任何元素
-
contains
如果此集合包含指定元素,则返回true。更正式地说,当且仅当此集合包含满足o.equals(e)的元素e时,返回true。- 指定者:
contains在接口Collection<E>中- 指定者:
contains在接口Set<E>中- 重写:
contains在类AbstractCollection<E>中- 参数:
o- 要检查此集合中包含的对象- 返回:
true如果此集合包含指定元素- 抛出:
ClassCastException- 如果无法将指定元素与当前集合中的元素进行比较NullPointerException- 如果指定元素为空
-
add
如果指定的元素不存在,则将其添加到此集合中。更正式地说,如果集合不包含满足e.equals(e2)的元素e2,则将指定元素e添加到该集合。如果此集合已包含该元素,则调用保持集合不变并返回false。- 指定者:
add在接口Collection<E>中- 指定者:
add在接口Set<E>中- 重写:
add在类AbstractCollection<E>中- 参数:
e- 要添加到此集合的元素- 返回:
true如果此集合尚未包含指定元素- 抛出:
ClassCastException- 如果无法将e与该集合中当前的元素进行比较NullPointerException- 如果指定元素为空
-
remove
如果存在,则从此集合中移除指定元素。更正式地说,删除一个元素e这样o.equals(e),如果这个集合包含这样一个元素。如果此集合包含该元素,则返回true(或者等效地,如果此集合因调用而更改)。 (一旦调用返回,此集合将不包含该元素。)- 指定者:
remove在接口Collection<E>中- 指定者:
remove在接口Set<E>中- 重写:
remove在类AbstractCollection<E>中- 参数:
o- 要从此集合中删除的对象(如果存在)- 返回:
true如果这个集合包含指定的元素- 抛出:
ClassCastException- 如果无法将o与该集合中的当前元素进行比较NullPointerException- 如果指定元素为空
-
clear
public void clear()从此集合中删除所有元素。- 指定者:
clear在接口Collection<E>中- 指定者:
clear在接口Set<E>中- 重写:
clear在类AbstractCollection<E>中
-
iterator
按升序返回此集合中元素的迭代器。- 指定者:
iterator在接口Collection<E>中- 指定者:
iterator在接口Iterable<E>中- 指定者:
iterator在接口NavigableSet<E>中- 指定者:
iterator在接口Set<E>中- 指定者:
iterator在类AbstractCollection<E>中- 返回:
- 按升序迭代此 set 中的元素的迭代器
-
descendingIterator
按降序返回此集合中元素的迭代器。- 指定者:
descendingIterator在接口NavigableSet<E>中- 返回:
- 按降序对该集合中的元素进行迭代
-
equals
比较指定对象与此集合是否相等。如果指定对象也是一个集合,则返回true,这两个集合具有相同的大小,并且指定集合的每个成员都包含在这个集合中(或者等效地,这个集合的每个成员都包含在指定集合中)。此定义确保 equals 方法在 set 接口的不同实现中正常工作。- 指定者:
equals在接口Collection<E>中- 指定者:
equals在接口Set<E>中- 重写:
equals在类AbstractSet<E>中- 参数:
o- 要与此集合进行比较的对象- 返回:
true如果指定的对象等于这个集合- 参见:
-
removeAll
从此集合中移除指定集合中包含的所有元素。如果指定的集合也是一个集合,则此操作有效地修改了这个集合,使其值为不对称集差两组中的。- 指定者:
removeAll在接口Collection<E>中- 指定者:
removeAll在接口Set<E>中- 重写:
removeAll在类AbstractSet<E>中- 参数:
c- 包含要从此集合中删除的元素的集合- 返回:
true如果此集合因调用而更改- 抛出:
ClassCastException- 如果此集合的元素类与指定集合不兼容 (optional)NullPointerException- 如果指定的集合或其任何元素为空- 参见:
-
lower
从接口NavigableSet复制的描述返回此集合中严格小于给定元素的最大元素,如果没有这样的元素,则返回null。- 指定者:
lower在接口NavigableSet<E>中- 参数:
e- 要匹配的值- 返回:
-
小于
e的最大元素,或者null如果没有这样的元素 - 抛出:
ClassCastException- 如果无法将指定元素与当前集合中的元素进行比较NullPointerException- 如果指定元素为空
-
floor
从接口NavigableSet复制的描述返回此集合中小于或等于给定元素的最大元素,如果没有这样的元素,则返回null。- 指定者:
floor在接口NavigableSet<E>中- 参数:
e- 要匹配的值- 返回:
-
小于或等于
e的最大元素,如果没有这样的元素,则为null - 抛出:
ClassCastException- 如果无法将指定元素与当前集合中的元素进行比较NullPointerException- 如果指定元素为空
-
ceiling
从接口NavigableSet复制的描述返回此集合中大于或等于给定元素的最小元素,如果没有这样的元素,则返回null。- 指定者:
ceiling在接口NavigableSet<E>中- 参数:
e- 要匹配的值- 返回:
-
大于或等于
e的最小元素,如果没有这样的元素,则为null - 抛出:
ClassCastException- 如果无法将指定元素与当前集合中的元素进行比较NullPointerException- 如果指定元素为空
-
higher
从接口NavigableSet复制的描述返回此集合中严格大于给定元素的最小元素,如果没有这样的元素,则返回null。- 指定者:
higher在接口NavigableSet<E>中- 参数:
e- 要匹配的值- 返回:
-
大于
e的最小元素,如果没有这样的元素,则为null - 抛出:
ClassCastException- 如果无法将指定元素与当前集合中的元素进行比较NullPointerException- 如果指定元素为空
-
pollFirst
从接口NavigableSet复制的描述检索并删除第一个(最低)元素,如果此集合为空,则返回null。- 指定者:
pollFirst在接口NavigableSet<E>中- 返回:
-
第一个元素,或
null如果此集合为空
-
pollLast
从接口NavigableSet复制的描述检索并删除最后一个(最高)元素,如果此集合为空,则返回null。- 指定者:
pollLast在接口NavigableSet<E>中- 返回:
-
最后一个元素,或
null如果此集合为空
-
comparator
从接口SortedSet复制的描述返回用于对该集合中的元素进行排序的比较器,如果该集合使用其元素的 自然排序,则返回null。- 指定者:
comparator在接口SortedSet<E>中- 返回:
-
用于对该集合中的元素进行排序的比较器,或者
null如果该集合使用其元素的自然排序
-
first
从接口SortedSet复制的描述返回此集合中当前的第一个(最低)元素。- 指定者:
first在接口SortedSet<E>中- 返回:
- 此集合中当前的第一个(最低)元素
- 抛出:
NoSuchElementException- 如果这个集合是空的
-
last
从接口SortedSet复制的描述返回此集合中当前的最后一个(最高)元素。- 指定者:
last在接口SortedSet<E>中- 返回:
- 该集合中当前的最后一个(最高)元素
- 抛出:
NoSuchElementException- 如果这个集合是空的
-
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位于范围的边界之外。
-
headSet
从接口NavigableSet复制的描述返回此集合的部分视图,其元素小于(或等于,如果inclusive为真)toElement。返回的集合受此集合的支持,因此返回集合中的更改会反映在此集合中,反之亦然。返回的集合支持该集合支持的所有可选集合操作。返回的集合将在尝试插入其范围之外的元素时抛出
IllegalArgumentException。- 指定者:
headSet在接口NavigableSet<E>中- 参数:
toElement- 返回集的高端点inclusive-true如果高端点要包含在返回的视图中- 返回:
-
该集合的部分视图,其元素小于(或等于,如果
inclusive为真)toElement - 抛出:
ClassCastException- 如果toElement与该集合的比较器不兼容(或者,如果该集合没有比较器,如果toElement没有实现Comparable)。如果无法将toElement与集合中的当前元素进行比较,则实现可能会(但不是必须)抛出此异常。NullPointerException- 如果toElement为空IllegalArgumentException- 如果这个集合本身有一个限制范围,并且toElement位于范围的边界之外
-
tailSet
从接口NavigableSet复制的描述返回此集合的部分视图,其元素大于(或等于,如果inclusive为真)fromElement。返回的集合受此集合的支持,因此返回集合中的更改会反映在此集合中,反之亦然。返回的集合支持该集合支持的所有可选集合操作。返回的集合将在尝试插入其范围之外的元素时抛出
IllegalArgumentException。- 指定者:
tailSet在接口NavigableSet<E>中- 参数:
fromElement- 返回集的低端点inclusive-true如果低端点要包含在返回的视图中- 返回:
-
该集合的元素大于或等于
fromElement的部分的视图 - 抛出:
ClassCastException- 如果fromElement与该集合的比较器不兼容(或者,如果该集合没有比较器,如果fromElement未实现Comparable)。如果fromElement无法与集合中当前的元素进行比较,实现可能会(但不是必须)抛出此异常。NullPointerException- 如果fromElement为空IllegalArgumentException- 如果这个集合本身有一个限制范围,并且fromElement位于范围的边界之外
-
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为空IllegalArgumentException- 如果这个集合本身有一个限制范围,并且toElement位于范围的边界之外
-
tailSet
从接口NavigableSet复制的描述返回此集合中元素大于或等于fromElement的部分的视图。返回的集合受此集合的支持,因此返回集合中的更改会反映在此集合中,反之亦然。返回的集合支持该集合支持的所有可选集合操作。返回的集合将在尝试插入其范围之外的元素时抛出
IllegalArgumentException。相当于
tailSet(fromElement, true)。- 指定者:
tailSet在接口NavigableSet<E>中- 指定者:
tailSet在接口SortedSet<E>中- 参数:
fromElement- 返回集的低端点(含)- 返回:
-
该集合的元素大于或等于
fromElement的部分的视图 - 抛出:
ClassCastException- 如果fromElement与该集合的比较器不兼容(或者,如果该集合没有比较器,如果fromElement未实现Comparable)。如果fromElement无法与集合中当前的元素进行比较,实现可能会(但不是必须)抛出此异常。NullPointerException- 如果fromElement为空IllegalArgumentException- 如果这个集合本身有一个限制范围,并且fromElement位于范围的边界之外
-
descendingSet
返回此集合中包含的元素的倒序视图。降序集由该集支持,因此对该集的更改会反映在降序集中,反之亦然。返回的集合的排序等同于
Collections.reverseOrder(comparator())。表达式s.descendingSet().descendingSet()返回s的视图,本质上等同于s。- 指定者:
descendingSet在接口NavigableSet<E>中- 返回:
- 该集合的逆序视图
-
spliterator
返回此集合中元素的Spliterator。Spliterator报告Spliterator.CONCURRENT、Spliterator.NONNULL、Spliterator.DISTINCT、Spliterator.SORTED和Spliterator.ORDERED,遇到顺序为升序。覆盖实施应记录附加特征值的报告。如果 集合的比较器 是
null,则 分离器的比较器 是null。否则,拆分器的比较器与集合的比较器相同或强加相同的总排序。- 指定者:
spliterator在接口Collection<E>中- 指定者:
spliterator在接口Iterable<E>中- 指定者:
spliterator在接口Set<E>中- 指定者:
spliterator在接口SortedSet<E>中- 返回:
-
a
Spliterator覆盖此集合中的元素 - 自从:
- 1.8
-