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