- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- java.util.AbstractSet<E>
-
- java.util.concurrent.ConcurrentSkipListSet<E>
-
- 参数类型
-
E
- 由此集合维护的元素的类型
- All Implemented Interfaces:
-
Serializable
,Cloneable
,Iterable<E>
,Collection<E>
,NavigableSet<E>
,Set<E>
,SortedSet<E>
public class ConcurrentSkipListSet<E> extends AbstractSet<E> implements NavigableSet<E>, Cloneable, Serializable
可扩展的并行NavigableSet
实现基于一个ConcurrentSkipListMap
。 集合的元素根据它们的natural ordering或按创建时间提供的Comparator
进行分类,具体取决于使用哪个构造函数。此实现提供预期平均log(n)的时间成本,为
contains
,add
,并remove
操作及其变体。 插入,删除和访问操作由多个线程并发执行安全地执行。迭代器和拼接器是weakly consistent 。
升序排序视图及其迭代器比降序更快。
请注意,与大多数集合不同,
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 Collections Framework的会员。
- 从以下版本开始:
- 1.6
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 Constructor 描述 ConcurrentSkipListSet()
构造一个新的,空的集合,根据他们的natural ordering订购它的元素。ConcurrentSkipListSet(Collection<? extends E> c)
构造一个包含指定集合中的元素的新集合,根据它们的natural ordering对其元素进行排序 。ConcurrentSkipListSet(Comparator<? super E> comparator)
构造一个新的空集合,根据指定的比较器对其元素进行排序。ConcurrentSkipListSet(SortedSet<E> s)
构造一个包含相同元素并使用与指定排序集相同顺序的新集合。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 boolean
add(E e)
将指定的元素添加到此集合(如果尚未存在)。E
ceiling(E e)
返回此集合中最小元素大于或等于给定元素,如果没有此元素,则null
。void
clear()
从此集合中删除所有元素。ConcurrentSkipListSet<E>
clone()
返回此ConcurrentSkipListSet
实例的浅拷贝。Comparator<? super E>
comparator()
返回用于对该集合中的元素进行排序的比较器,或null
如果此集合使用其元素的natural ordering 。boolean
contains(Object o)
如果此集合包含指定的元素,则返回true
。Iterator<E>
descendingIterator()
以降序返回该集合中的元素的迭代器。NavigableSet<E>
descendingSet()
返回此集合中包含的元素的反向排序视图。boolean
equals(Object o)
将指定的对象与此集合进行比较以实现相等。E
first()
返回此集合中当前的第一个(最低)元素。E
floor(E e)
返回此集合中最大的元素小于或等于给定元素,如果没有此元素,则null
。NavigableSet<E>
headSet(E toElement)
返回此集合的部分的视图,其元素严格小于toElement
。NavigableSet<E>
headSet(E toElement, boolean inclusive)
返回此集合的部分的视图,其元素小于(或等于,如果为inclusive
为真)toElement
。E
higher(E e)
返回这个集合中的最小元素严格大于给定的元素,如果没有这样的元素,则null
。boolean
isEmpty()
如果此集合不包含元素,则返回true
。Iterator<E>
iterator()
以升序返回该集合中的元素的迭代器。E
last()
返回此集合中当前的最后(最高)元素。E
lower(E e)
返回该集合中最大的元素严格小于给定的元素,如果没有这样的元素,则null
。E
pollFirst()
检索并删除第一个(最低)元素,如果此集合为空,则返回null
。E
pollLast()
检索并删除最后一个(最高)元素,如果此集合为空,则返回null
。boolean
remove(Object o)
如果存在,则从该集合中删除指定的元素。boolean
removeAll(Collection<?> c)
从此集合中删除指定集合中包含的所有元素。int
size()
返回此集合中的元素数。Spliterator<E>
spliterator()
返回此集合中的元素Spliterator
。NavigableSet<E>
subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
返回该集合的部分的视图,其元素的范围从fromElement
到toElement
。NavigableSet<E>
subSet(E fromElement, E toElement)
返回该集合的部分视图,其元素的范围从fromElement
(含)到toElement
,独占。NavigableSet<E>
tailSet(E fromElement)
返回该集合的部分的视图,该部分的元素大于或等于fromElement
。NavigableSet<E>
tailSet(E fromElement, boolean inclusive)
返回该组的部分的视图,其元素大于(或等于,如果inclusive
为真)fromElement
。-
Methods inherited from class java.util.AbstractCollection
addAll, containsAll, retainAll, toArray, toArray, toString
-
Methods inherited from class java.util.AbstractSet
hashCode
-
Methods inherited from interface java.util.Collection
parallelStream, removeIf, stream
-
-
-
-
构造方法详细信息
-
ConcurrentSkipListSet
public ConcurrentSkipListSet()
构造一个新的,空的集合,根据它们的natural ordering命令其元素。
-
ConcurrentSkipListSet
public ConcurrentSkipListSet(Comparator<? super E> comparator)
构造一个新的空集合,根据指定的比较器对其元素进行排序。- 参数
-
comparator
- 将用于对该集合进行排序的比较器。 如果是null
,将使用natural ordering的元素。
-
ConcurrentSkipListSet
public ConcurrentSkipListSet(Collection<? extends E> c)
构造一个包含指定集合中的元素的新集合,根据它们的natural ordering对其元素进行排序 。- 参数
-
c
- 将组成新集合的元素 - 异常
-
ClassCastException
- 如果c
中的元素不是Comparable
,或者不相互比较 -
NullPointerException
- 如果指定的集合或其任何元素为空
-
ConcurrentSkipListSet
public ConcurrentSkipListSet(SortedSet<E> s)
构造一个包含相同元素并使用与指定排序集相同顺序的新集合。- 参数
-
s
- 其元素将组成新集合的排序集 - 异常
-
NullPointerException
- 如果指定的排序集或其任何元素为空
-
-
方法详细信息
-
clone
public ConcurrentSkipListSet<E> clone()
返回此ConcurrentSkipListSet
实例的浅拷贝。 (元素本身不被克隆。)
-
size
public int size()
返回此集合中的元素数。 如果此集合包含Integer.MAX_VALUE
元素,则返回Integer.MAX_VALUE
。请注意,与大多数集合不同,此方法不是一个常时操作。 由于这些集合的异步性质,确定当前数量的元素需要遍历它们才能对它们进行计数。 此外,在执行此方法期间,大小可能会发生更改,在这种情况下,返回的结果将不准确。 因此,这种方法在并发应用程序中通常不是很有用。
- Specified by:
-
size
在接口Collection<E>
- Specified by:
-
size
在接口Set<E>
- Specified by:
-
size
在AbstractCollection<E>
- 结果
- 该集合中的元素数量
-
isEmpty
public boolean isEmpty()
如果此集合不包含元素,则返回true
。- Specified by:
-
isEmpty
在接口Collection<E>
- Specified by:
-
isEmpty
在接口Set<E>
- 重写:
-
isEmpty
在AbstractCollection<E>
- 结果
-
true
如果这个集合不包含元素
-
contains
public boolean contains(Object o)
如果此集合包含指定的元素,则返回true
。 更正式地说,返回true
当且仅当此set包含的元素e
这样o.equals(e)
。- Specified by:
-
contains
在接口Collection<E>
- Specified by:
-
contains
在接口Set<E>
- 重写:
-
contains
在AbstractCollection<E>
- 参数
-
o
- 该集合中要检查的对象 - 结果
-
true
如果此集合包含指定的元素 - 异常
-
ClassCastException
- 如果指定的元素不能与当前在此集合中的元素进行比较 -
NullPointerException
- 如果指定的元素为空
-
add
public boolean add(E e)
将指定的元素添加到此集合(如果尚未存在)。 更正式地,如果该集合不包含e2
,使得指定的元素e
e2
e.equals(e2)
。 如果该集合已经包含该元素,则该呼叫将保持不变,并返回false
。- Specified by:
-
add
在接口Collection<E>
- Specified by:
-
add
在接口Set<E>
- 重写:
-
add
在AbstractCollection<E>
- 参数
-
e
- 要添加到此集合的元素 - 结果
-
true
如果此集合尚未包含指定的元素 - 异常
-
ClassCastException
- 如果e
不能与本集合中的元素进行比较 -
NullPointerException
- 如果指定的元素为空
-
remove
public boolean remove(Object o)
如果存在,则从该集合中删除指定的元素。 更正式地,删除元素e
使得o.equals(e)
,如果这个集合包含这样的元素。 如果此集合包含元素(或等效地,如果该集合由于调用而更改),则返回true
。 (一旦调用返回,此集合将不包含该元素。)- Specified by:
-
remove
在接口Collection<E>
- Specified by:
-
remove
在接口Set<E>
- 重写:
-
remove
在AbstractCollection<E>
- 参数
-
o
- 要从该集合中删除的对象(如果存在) - 结果
-
true
如果这个集合包含指定的元素 - 异常
-
ClassCastException
- 如果o
不能与本集合中的元素进行比较 -
NullPointerException
- 如果指定的元素为空
-
clear
public void clear()
从此集合中删除所有元素。- Specified by:
-
clear
在接口Collection<E>
- Specified by:
-
clear
在接口Set<E>
- 重写:
-
clear
在AbstractCollection<E>
-
iterator
public Iterator<E> iterator()
以升序返回该集合中的元素的迭代器。- Specified by:
-
iterator
在接口Collection<E>
- Specified by:
-
iterator
在接口Iterable<E>
- Specified by:
-
iterator
在接口NavigableSet<E>
- Specified by:
-
iterator
在接口Set<E>
- Specified by:
-
iterator
在AbstractCollection<E>
- 结果
- 这个集合中的元素的迭代器按升序排列
-
descendingIterator
public Iterator<E> descendingIterator()
以降序返回该集合中的元素的迭代器。- Specified by:
-
descendingIterator
在接口NavigableSet<E>
- 结果
- 这个集合中的元素的迭代器按降序排列
-
equals
public boolean equals(Object o)
将指定的对象与此集合进行比较以实现相等。 如果指定的对象也是一个集合,则返回true
,这两个集合的大小相同,并且指定集合中的每个成员都包含在该集合中(或者等效地,该集合的每个成员都包含在指定的集合中)。 此定义可确保equals方法在集合接口的不同实现之间正常工作。- Specified by:
-
equals
在接口Collection<E>
- Specified by:
-
equals
在接口Set<E>
- 重写:
-
equals
在AbstractSet<E>
- 参数
-
o
- 要与此集合相等的对象进行比较 - 结果
-
true
如果指定的对象等于此集合 - 另请参见:
-
Object.hashCode()
,HashMap
-
removeAll
public boolean removeAll(Collection<?> c)
从此集合中删除指定集合中包含的所有元素。 如果指定的集合也是集合,则该操作有效地修改该集合,使其值是两组的非对称集合差异 。- Specified by:
-
removeAll
在接口Collection<E>
- Specified by:
-
removeAll
在接口Set<E>
- 重写:
-
removeAll
在AbstractSet<E>
- 参数
-
c
- 包含要c
集合中删除的元素的集合 - 结果
-
true
如果此设置由于呼叫而更改 - 异常
-
ClassCastException
- 如果此集合的元素的类与指定的集合不兼容( optional ) -
NullPointerException
- 如果指定的集合或其任何元素为空 - 另请参见:
-
AbstractCollection.remove(Object)
,AbstractCollection.contains(Object)
-
lower
public E lower(E e)
说明从界面NavigableSet
复制返回该集合中最大的元素严格小于给定的元素,如果没有这样的元素,则null
。- Specified by:
-
lower
在接口NavigableSet<E>
- 参数
-
e
- 要匹配的值 - 结果
-
最大元素小于
e
,或null
如果没有这样的元素 - 异常
-
ClassCastException
- 如果指定的元素不能与当前集合中的元素进行比较 -
NullPointerException
- 如果指定的元素为空
-
floor
public E floor(E e)
说明从接口NavigableSet
复制返回此集中小于或等于给定元素的最大元素,如果没有此元素,则null
。- Specified by:
-
floor
在接口NavigableSet<E>
- 参数
-
e
- 要匹配的值 - 结果
-
小于或等于
e
的最大元素,如果没有这样的元素,null
- 异常
-
ClassCastException
- 如果指定的元素不能与当前集合中的元素进行比较 -
NullPointerException
- 如果指定的元素为空
-
ceiling
public E ceiling(E e)
描述从接口NavigableSet
复制返回此集合中最小元素大于或等于给定元素,如果没有此元素,则null
。- Specified by:
-
ceiling
在接口NavigableSet<E>
- 参数
-
e
- 要匹配的值 - 结果
-
最小元素大于或等于
e
,如果没有这样的元素,null
- 异常
-
ClassCastException
- 如果指定的元素无法与当前集合中的元素进行比较 -
NullPointerException
- 如果指定的元素为空
-
higher
public E higher(E e)
描述从界面NavigableSet
复制返回此集合中的最小元素严格大于给定元素,如果没有此元素,则null
。- Specified by:
-
higher
接口NavigableSet<E>
- 参数
-
e
- 要匹配的值 - 结果
-
最小元素大于
e
,或null
如果没有这样的元素 - 异常
-
ClassCastException
- 如果指定的元素不能与当前集合中的元素进行比较 -
NullPointerException
- 如果指定的元素为空
-
pollFirst
public E pollFirst()
说明从界面NavigableSet
复制检索并删除第一个(最低)元素,如果此集合为空,则返回null
。- Specified by:
-
pollFirst
在接口NavigableSet<E>
- 结果
-
第一个元素,或
null
如果此集合为空
-
pollLast
public E pollLast()
说明从接口NavigableSet
复制检索并删除最后一个(最高)元素,如果该集合为空,则返回null
。- Specified by:
-
pollLast
在接口NavigableSet<E>
- 结果
-
最后一个元素,如果该集合为空,
null
-
comparator
public Comparator<? super E> comparator()
说明从界面SortedSet
复制返回用于为了在这个组中的元素,或比较null
如果这个集使用natural ordering的元素。- Specified by:
-
comparator
在接口SortedSet<E>
- 结果
-
比较器用于对该集合中的元素进行排序,如果此集合使用其元素的自然排序,
null
-
first
public E first()
说明从界面SortedSet
复制返回此集合中当前的第一个(最低)元素。- Specified by:
-
first
在接口SortedSet<E>
- 结果
- 当前在这个集合中的第一(最低)元素
- 异常
-
NoSuchElementException
- 如果此设置为空
-
last
public E last()
说明从界面SortedSet
复制返回此集合中当前的最后(最高)元素。- Specified by:
-
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
,试图在其范围之外插入一个元素。- Specified by:
-
subSet
在接口NavigableSet<E>
- 参数
-
fromElement
- 返回集合的低端点 -
fromInclusive
-true
如果低端点要包含在返回的视图中 -
toElement
- 返回集合的高端点 -
toInclusive
-true
如果true
高端点包含在返回视图中 - 结果
-
该集合的部分视图的元素范围从
fromElement
(含)到toElement
,独占 - 异常
-
ClassCastException
- 如果fromElement
和toElement
不能使用该集合的比较器彼此进行比较(或者如果该集合没有比较器,则使用自然排序)。 如果fromElement
或toElement
无法与当前在集合中的元素进行比较,则实施可能但不是必须抛出此异常。 -
NullPointerException
- 如果fromElement
或toElement
为null -
IllegalArgumentException
- 如果fromElement
大于toElement
; 或者如果此设置本身具有限制范围,并且fromElement
或toElement
位于范围的范围之外。
-
headSet
public NavigableSet<E> headSet(E toElement, boolean inclusive)
描述从接口NavigableSet
复制返回此集合的部分的视图,其元素小于(或等于,如果inclusive
为真)toElement
。 返回的集合由此集合支持,因此返回集合中的更改将反映在此集合中,反之亦然。 返回的集合支持该集支持的所有可选集合操作。返回的集合将抛出一个
IllegalArgumentException
,试图在其范围之外插入一个元素。- Specified by:
-
headSet
在接口NavigableSet<E>
- 参数
-
toElement
- 返回集合的高端点 -
inclusive
-true
如果高端点要包含在返回视图中 - 结果
-
元素小于(或等于,如果为
inclusive
为真)的该集合的部分的视图)toElement
- 异常
-
ClassCastException
- 如果toElement
与该组比较器不兼容(或者如果该集合没有比较器,如果toElement
不实现Comparable
)。 如果toElement
无法与当前集合中的元素进行比较,则实施可能但不是必须抛出此异常。 -
NullPointerException
- 如果toElement
为空 -
IllegalArgumentException
- 如果此设置本身具有限制范围,并且toElement
位于范围的边界之外
-
tailSet
public NavigableSet<E> tailSet(E fromElement, boolean inclusive)
描述从接口NavigableSet
复制返回此集合的部分的视图,其元素大于(或等于,如果inclusive
为真)fromElement
。 返回的集合由此集合支持,因此返回集合中的更改将反映在此集合中,反之亦然。 返回的集合支持该集支持的所有可选集合操作。返回的集合将抛出一个
IllegalArgumentException
,试图将一个元素插入其范围之外。- Specified by:
-
tailSet
在接口NavigableSet<E>
- 参数
-
fromElement
- 返回集合的低端点 -
inclusive
-true
如果低端点要包含在返回的视图中 - 结果
-
该集合的部分的视图,其元素大于或等于
fromElement
- 异常
-
ClassCastException
- 如果fromElement
与此组比较器不兼容(或如果该组没有比较器,如果fromElement
不实现Comparable
)。 如果fromElement
无法与当前集合中的元素进行比较,则实施可能但不是必须抛出此异常。 -
NullPointerException
- 如果fromElement
为空 -
IllegalArgumentException
- 如果此设置本身具有限制范围,并且fromElement
位于范围范围之外
-
subSet
public NavigableSet<E> subSet(E fromElement, E toElement)
说明从界面:NavigableSet
复制返回该集合的部分的视图,其元素的范围从fromElement
(含)到toElement
,排他。 (如果fromElement
和toElement
相等,则返回的集合为空。)返回的集合由此集合支持,因此返回集合中的更改将反映在此集合中,反之亦然。 返回的集合支持该集支持的所有可选集合操作。返回的集合将抛出一个
IllegalArgumentException
,试图在其范围之外插入一个元素。相当于
subSet(fromElement, true, toElement, false)
。- Specified by:
-
subSet
接口NavigableSet<E>
- Specified by:
-
subSet
在接口SortedSet<E>
- 参数
-
fromElement
- 返回集合的低端点(含) -
toElement
- 返回集合的高端点(独占) - 结果
-
该集合的部分的视图,其元素的范围从
fromElement
(含)到toElement
,独占 - 异常
-
ClassCastException
- 如果fromElement
和toElement
不能使用该集合的比较器彼此进行比较(或者如果该集合没有比较器,则使用自然排序)。 如果fromElement
或toElement
无法与当前集合中的元素进行比较,则实施可能但不是必须抛出此异常。 -
NullPointerException
- 如果fromElement
或toElement
为空 -
IllegalArgumentException
- 如果fromElement
大于toElement
; 或者如果此设置本身具有限制范围,并且fromElement
或toElement
位于范围的范围之外
-
headSet
public NavigableSet<E> headSet(E toElement)
说明从界面NavigableSet
复制返回该集合的部分的视图,其元素严格小于toElement
。 返回的集合由此集合支持,因此返回集合中的更改将反映在此集合中,反之亦然。 返回的集合支持该集支持的所有可选集合操作。返回的集合将抛出一个
IllegalArgumentException
,试图将一个元素插入其范围之外。相当于
headSet(toElement, false)
。- Specified by:
-
headSet
在接口NavigableSet<E>
- Specified by:
-
headSet
在接口SortedSet<E>
- 参数
-
toElement
- 返回集合的高端点(独占) - 结果
-
该集合的部分的视图,其元素严格小于
toElement
- 异常
-
ClassCastException
- 如果toElement
与此设置的比较器不兼容(或者如果该集合没有比较器,则toElement
不实现Comparable
)。 如果toElement
无法与当前集合中的元素进行比较,则实施可能但不是必须抛出此异常。 -
NullPointerException
- 如果toElement
为空 -
IllegalArgumentException
- 如果此设置本身具有限制范围,并且toElement
位于范围范围之外
-
tailSet
public NavigableSet<E> tailSet(E fromElement)
说明从接口NavigableSet
复制返回该集合的部分的视图,该部分的元素大于或等于fromElement
。 返回的集合由此集合支持,因此返回集合中的更改将反映在此集合中,反之亦然。 返回的集合支持该集支持的所有可选集合操作。返回的集合将抛出一个
IllegalArgumentException
,试图在其范围之外插入一个元素。相当于
tailSet(fromElement, true)
。- Specified by:
-
tailSet
在接口NavigableSet<E>
- Specified by:
-
tailSet
在接口SortedSet<E>
- 参数
-
fromElement
- 返回集合的低端点(含) - 结果
-
该集合的部分的视图,其元素大于或等于
fromElement
- 异常
-
ClassCastException
- 如果fromElement
与该组比较器不兼容(或者如果该集合没有比较器,则fromElement
不实现Comparable
)。 如果fromElement
无法与当前集合中的元素进行比较,则实施可能但不是必须抛出此异常。 -
NullPointerException
- 如果fromElement
为空 -
IllegalArgumentException
- 如果此设置本身具有限制范围,并且fromElement
位于范围的范围之外
-
descendingSet
public NavigableSet<E> descendingSet()
返回此集合中包含的元素的反向排序视图。 下降集由此集合支持,因此对集合的更改反映在下降集中,反之亦然。返回的集合的订单等效于
Collections.reverseOrder
(comparator())
。 表达s.descendingSet().descendingSet()
返回一个视图的s
实质上等同于s
。- Specified by:
-
descendingSet
在接口NavigableSet<E>
- 结果
- 这个集合的逆序视图
-
spliterator
public Spliterator<E> spliterator()
返回此集合中的元素Spliterator
。该
Spliterator
报告Spliterator.CONCURRENT
,Spliterator.NONNULL
,Spliterator.DISTINCT
,Spliterator.SORTED
和Spliterator.ORDERED
,与被升序的顺序相遇。 覆盖实现应记录其他特征值的报告。该spliterator的比较(见
Spliterator.getComparator()
)是null
如果设定的比较(见comparator()
)是null
。 否则,分配器的比较器与设置的比较器相同或者施加相同的总排序。- Specified by:
-
spliterator
在接口Collection<E>
- Specified by:
-
spliterator
在接口Iterable<E>
- Specified by:
-
spliterator
在接口Set<E>
- Specified by:
-
spliterator
在接口SortedSet<E>
- 结果
-
一个
Spliterator
在这个集合中的元素 - 从以下版本开始:
- 1.8
-
-