- 类型参数:
-
E
- 此集合中元素的类型
- 所有实现的接口:
-
Serializable
,Cloneable
,Iterable<E>
,Collection<E>
,NavigableSet<E>
,SequencedCollection<E>
,SequencedSet<E>
,Set<E>
,SortedSet<E>
ConcurrentSkipListMap
的可伸缩并发NavigableSet
实现。集合的元素根据它们的自然顺序或在创建集合时提供的Comparator
(取决于使用哪个构造函数)进行排序。
此实现为contains
、add
和remove
操作及其变体提供了预期的平均log(n)时间成本。插入、删除和访问操作可以安全地由多个线程并发执行。
迭代器和分割器是弱一致性的。
升序排序的视图及其迭代器比降序视图更快。
请注意,与大多数集合不同,size
方法不是常量时间操作。由于这些集合的异步性质,确定当前元素数量需要遍历元素,因此如果在遍历期间修改了此集合,则可能报告不准确的结果。
添加、删除或检查多个元素的批量操作,例如AbstractCollection.addAll(java.util.Collection<? extends E>)
、Collection.removeIf(java.util.function.Predicate<? super E>)
或Iterable.forEach(java.util.function.Consumer<? super T>)
,不能保证原子执行。例如,与addAll
操作并发的forEach
遍历可能只观察到一些已添加的元素。
此类及其迭代器实现了Set
和Iterator
接口的所有可选方法。与大多数其他并发集合实现一样,此类不允许使用null
元素,因为无法可靠区分null
参数和返回值与元素的缺失。
此类是Java集合框架的成员。
- 自版本:
- 1.6
- 另请参阅:
-
Constructor Summary
ConstructorDescription构造一个新的空集,根据其自然顺序
对元素进行排序。ConcurrentSkipListSet
(Collection<? extends E> c) 构造一个包含指定集合中元素的新集合,根据其自然顺序
对元素进行排序。ConcurrentSkipListSet
(Comparator<? super E> comparator) 构造一个新的空集,根据指定的比较器对元素进行排序。构造一个包含与指定排序集相同元素并使用相同排序方式的新集合。 -
Method Summary
Modifier and TypeMethodDescriptionboolean
如果此集合中尚未存在指定元素,则将其添加到此集合。void
抛出UnsupportedOperationException
。void
抛出UnsupportedOperationException
。返回大于或等于给定元素的此集合中最小元素,如果不存在这样的元素,则返回null
。void
clear()
从此集合中移除所有元素。clone()
返回此ConcurrentSkipListSet
实例的浅拷贝。Comparator
<? super E> 返回用于对此集合中元素排序的比较器,如果此集合使用其元素的自然顺序
,则返回null
。boolean
返回true
如果此集合包含指定元素。返回此集合中元素的降序迭代器。返回此集合中包含的元素的逆序视图。boolean
将指定对象与此集合进行比较以判断相等性。first()
返回此集合中当前最小(最低)元素。返回小于或等于给定元素的此集合中最大元素,如果不存在这样的元素,则返回null
。返回此集合中元素严格小于toElement
的部分视图。返回此集合中元素小于(如果inclusive
为true,则为小于或等于)toElement
的部分视图。返回大于给定元素的此集合中严格最小元素,如果不存在这样的元素,则返回null
。boolean
isEmpty()
返回true
如果此集合不包含任何元素。iterator()
返回此集合中元素的升序迭代器。last()
返回此集合中当前最大(最高)元素。返回小于给定元素的此集合中最大元素,如果不存在这样的元素,则返回null
。检索并移除第一个(最低)元素,如果此集合为空则返回null
。pollLast()
检索并移除最后一个(最高)元素,如果此集合为空则返回null
。boolean
如果存在,则从此集合中移除指定元素。boolean
removeAll
(Collection<?> c) 从此集合中移除包含在指定集合中的所有元素。int
size()
返回此集合中的元素数量。返回此集合中元素的Spliterator
。返回此集合中元素范围从fromElement
到toElement
的部分视图。返回此集合中元素范围从fromElement
(包括)到toElement
(不包括)的部分视图。返回此集合中元素大于或等于fromElement
的部分视图。返回此集合中元素大于(如果inclusive
为true,则为大于或等于)fromElement
的部分视图。Methods declared in class java.util.AbstractSet
hashCode
Methods declared in class java.util.AbstractCollection
addAll, containsAll, retainAll, toArray, toArray, toString
Methods declared in interface java.util.Collection
parallelStream, removeIf, stream, toArray
Methods declared in interface java.util.NavigableSet
removeFirst, removeLast, reversed
-
Constructor Details
-
ConcurrentSkipListSet
public ConcurrentSkipListSet()构造一个新的空集,根据其自然顺序
对元素进行排序。 -
ConcurrentSkipListSet
构造一个新的空集,根据指定的比较器对元素进行排序。- 参数:
-
comparator
- 将用于对此集合排序的比较器。如果为null
,则将使用元素的自然顺序。
-
ConcurrentSkipListSet
构造一个包含指定集合中元素的新集合,根据其自然顺序
对元素进行排序。- 参数:
-
c
- 将组成新集合的元素 - 抛出:
-
ClassCastException
- 如果c
中的元素不是Comparable
,或者它们不是可相互比较的 -
NullPointerException
- 如果指定的集合或其任何元素为null
-
ConcurrentSkipListSet
构造一个包含与指定排序集相同元素并使用相同排序方式的新集合。- 参数:
-
s
- 其元素将组成新集合的排序集 - 抛出:
-
NullPointerException
- 如果指定的排序集或其任何元素为null
-
-
Method Details
-
clone
返回此ConcurrentSkipListSet
实例的浅拷贝。(元素本身不会被克隆。) -
size
public int size()返回此集合中的元素数量。如果此集合包含的元素超过Integer.MAX_VALUE
,则返回Integer.MAX_VALUE
。请注意,与大多数集合不同,此方法不是常量时间操作。由于这些集合的异步性质,确定当前元素数量需要遍历它们全部以计数。此外,在执行此方法期间集合的大小可能会发生变化,此时返回的结果将不准确。因此,在并发应用程序中,此方法通常不是非常有用。
-
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
- 如果指定元素为null
-
add
如果尚未包含指定元素,则将指定元素添加到此集合。更正式地说,如果集合不包含使得e.equals(e2)
成立的任何元素e2
,则将指定元素e
添加到此集合。如果此集合已包含该元素,则调用不会更改集合并返回false
。- 指定者:
-
add
在接口Collection<E>
中 - 指定者:
-
add
在接口Set<E>
中 - 覆盖:
-
add
在类AbstractCollection<E>
中 - 参数:
-
e
- 要添加到此集合的元素 - 返回:
-
如果此集合尚未包含指定元素,则返回
true
- 抛出:
-
ClassCastException
- 如果e
无法与当前在此集合中的元素进行比较 -
NullPointerException
- 如果指定元素为null
-
remove
如果存在,则从此集合中删除指定元素。更正式地说,如果此集合包含使得o.equals(e)
成立的元素e
,则删除该元素。如果此集合包含该元素,则返回true
(或者等效地,如果此集合由于调用而更改)。(一旦调用返回,此集合将不包含该元素。)- 指定者:
-
remove
在接口Collection<E>
中 - 指定者:
-
remove
在接口Set<E>
中 - 覆盖:
-
remove
在类AbstractCollection<E>
中 - 参数:
-
o
- 如果存在,则从此集合中删除的对象 - 返回:
-
如果此集合包含指定元素,则返回
true
- 抛出:
-
ClassCastException
- 如果o
无法与当前在此集合中的元素进行比较 -
NullPointerException
- 如果指定元素为null
-
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>
中 - 返回:
- 返回一个按升序排列的此集合中元素的迭代器
-
descendingIterator
返回一个按降序排列的此集合中元素的迭代器。- 指定者:
-
descendingIterator
在接口NavigableSet<E>
中 - 返回:
- 返回一个按降序排列的此集合中元素的迭代器
-
equals
将指定对象与此集合进行比较以检查是否相等。如果指定对象也是一个集合,两个集合具有相同的大小,并且指定集合的每个成员都包含在此集合中(或者等效地,此集合的每个成员都包含在指定集合中),则返回true
。此定义确保equals方法在集合接口的不同实现之间正常工作。- 指定由:
-
equals
在接口Collection<E>
- 指定由:
-
equals
在接口Set<E>
- 覆盖:
-
equals
在类AbstractSet<E>
- 参数:
-
o
- 用于与此集合比较相等性的对象 - 返回:
-
如果指定对象等于此集合,则返回
true
- 参见:
-
removeAll
从此集合中移除包含在指定集合中的所有元素。如果指定的集合也是一个集合,此操作有效地修改此集合,使其值为两个集合的非对称集合差。- 指定由:
-
removeAll
在接口Collection<E>
- 指定由:
-
removeAll
在接口Set<E>
- 覆盖:
-
removeAll
在类AbstractSet<E>
- 参数:
-
c
- 包含要从此集合中移除的元素的集合 - 返回:
-
如果此集合因调用而更改,则返回
true
- 抛出:
-
ClassCastException
- 如果此集合的元素的类与指定集合不兼容(可选) -
NullPointerException
- 如果指定集合或其任何元素为null - 参见:
-
lower
从接口复制的描述:NavigableSet
返回此集合中严格小于给定元素的最大元素,如果没有这样的元素,则返回null
。- 指定由:
-
lower
在接口NavigableSet<E>
- 参数:
-
e
- 要匹配的值 - 返回:
-
小于
e
的最大元素,如果没有这样的元素,则返回null
- 抛出:
-
ClassCastException
- 如果指定元素无法与集合中当前元素进行比较 -
NullPointerException
- 如果指定元素为null
-
floor
从接口复制的描述:NavigableSet
返回此集合中小于或等于给定元素的最大元素,如果没有这样的元素,则返回null
。- 指定由:
-
floor
在接口NavigableSet<E>
- 参数:
-
e
- 要匹配的值 - 返回:
-
小于或等于
e
的最大元素,如果没有这样的元素,则返回null
- 抛出:
-
ClassCastException
- 如果指定元素无法与集合中当前元素进行比较 -
NullPointerException
- 如果指定元素为null
-
ceiling
从接口复制的描述:NavigableSet
返回此集合中大于或等于给定元素的最小元素,如果没有这样的元素,则返回null
。- 指定由:
-
ceiling
在接口NavigableSet<E>
- 参数:
-
e
- 要匹配的值 - 返回:
-
大于或等于
e
的最小元素,如果没有这样的元素,则返回null
- 抛出:
-
ClassCastException
- 如果指定元素无法与集合中当前元素进行比较 -
NullPointerException
- 如果指定元素为null
-
higher
从接口复制的描述:NavigableSet
返回此集合中严格大于给定元素的最小元素,如果没有这样的元素,则返回null
。- 指定由:
-
higher
在接口NavigableSet<E>
- 参数:
-
e
- 要匹配的值 - 返回:
-
大于
e
的最小元素,如果没有这样的元素,则返回null
- 抛出:
-
ClassCastException
- 如果指定元素无法与集合中当前元素进行比较 -
NullPointerException
- 如果指定元素为null
-
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
- 如果此集合为空
-
addFirst
抛出UnsupportedOperationException
。由此集合的比较方法引起的遭遇顺序决定了元素的位置,因此不支持显式定位。- 指定由:
-
addFirst
在接口SequencedCollection<E>
- 指定由:
-
addFirst
在接口SortedSet<E>
- 参数:
-
e
- 要添加的元素 - 抛出:
-
UnsupportedOperationException
- 总是 - 自:
- 21
-
addLast
抛出UnsupportedOperationException
。由此集合的比较方法引起的遭遇顺序决定了元素的位置,因此不支持显式定位。- 指定由:
-
addLast
在接口SequencedCollection<E>
- 指定由:
-
addLast
在接口SortedSet<E>
- 参数:
-
e
- 要添加的元素。 - 抛出:
-
UnsupportedOperationException
- 总是 - 自:
- 21
-
subSet
public NavigableSet<E> subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) 从接口复制的描述:NavigableSet
返回此集合中元素范围从fromElement
到toElement
的视图。如果fromElement
和toElement
相等,则返回的集合为空,除非fromInclusive
和toInclusive
都为true。返回的集合由此集合支持,因此返回集合中的更改会反映在此集合中,反之亦然。返回的集合支持此集合支持的所有可选集合操作。尝试插入超出其范围的元素时,返回的集合将抛出
IllegalArgumentException
。- 指定由:
-
subSet
在接口NavigableSet<E>
- 参数:
-
fromElement
- 返回集合的低端点 -
fromInclusive
- 如果要在返回视图中包含低端点,则为true
-
toElement
- 返回集合的高端点 -
toInclusive
- 如果要在返回视图中包含高端点,则为true
- 返回:
-
返回此集合中元素范围从
fromElement
(包括)到toElement
(不包括)的视图 - 抛出:
-
ClassCastException
- 如果无法使用此集合的比较器将fromElement
和toElement
相互比较(或者如果集合没有比较器,则使用自然排序)。如果fromElement
或toElement
无法与当前集合中的元素进行比较,实现可能会但不是必须抛出此异常。 -
NullPointerException
- 如果fromElement
或toElement
为null -
IllegalArgumentException
- 如果fromElement
大于toElement
;或者如果此集合本身具有受限范围,并且fromElement
或toElement
位于范围的边界之外。
-
headSet
从接口复制的描述:NavigableSet
返回此集合中元素小于(如果inclusive
为true,则小于或等于)toElement
的视图。返回的集合由此集合支持,因此返回集合中的更改会反映在此集合中,反之亦然。返回的集合支持此集合支持的所有可选集合操作。尝试插入超出其范围的元素时,返回的集合将抛出
IllegalArgumentException
。- 指定由:
-
headSet
在接口NavigableSet<E>
- 参数:
-
toElement
- 返回集合的高端点 -
inclusive
- 如果要在返回视图中包含高端点,则为true
- 返回:
-
返回此集合中元素小于(如果
inclusive
为true,则小于或等于)toElement
的视图 - 抛出:
-
ClassCastException
- 如果toElement
与此集合的比较器不兼容(或者如果集合没有比较器,则如果toElement
未实现Comparable
)。如果toElement
无法与当前集合中的元素进行比较,实现可能会但不是必须抛出此异常。 -
NullPointerException
- 如果toElement
为null -
IllegalArgumentException
- 如果此集合本身具有受限范围,并且toElement
位于范围的边界之外
-
tailSet
从接口复制的描述:NavigableSet
返回此集合中元素大于(如果inclusive
为true,则大于或等于)fromElement
的视图。返回的集合由此集合支持,因此返回集合中的更改会反映在此集合中,反之亦然。返回的集合支持此集合支持的所有可选集合操作。尝试插入超出其范围的元素时,返回的集合将抛出
IllegalArgumentException
。- 指定由:
-
tailSet
在接口NavigableSet<E>
- 参数:
-
fromElement
- 返回集合的低端点 -
inclusive
- 如果要在返回视图中包含低端点,则为true
- 返回:
-
返回此集合中元素大于或等于
fromElement
的视图 - 抛出:
-
ClassCastException
- 如果fromElement
与此集合的比较器不兼容(或者如果集合没有比较器,则如果fromElement
未实现Comparable
)。如果fromElement
无法与当前集合中的元素进行比较,实现可能会但不是必须抛出此异常。 -
NullPointerException
- 如果fromElement
为null -
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
为null -
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 -
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 -
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
,遇到顺序为升序。重写实现应记录其他特征值的报告。spliterator的比较器如果集合的比较器为
null
,则为null
。否则,spliterator的比较器与集合的比较器相同或施加相同的总排序。- 指定者:
-
spliterator
在接口Collection<E>
- 指定者:
-
spliterator
在接口Iterable<E>
- 指定者:
-
spliterator
在接口Set<E>
- 指定者:
-
spliterator
在接口SortedSet<E>
- 返回:
-
包含此集合中元素的
Spliterator
- 自1.8起
-