java.lang.Object java.util.AbstractCollection<E> java.util.AbstractSet<E> java.util.concurrent.ConcurrentSkipListSet<E>
E
- 此 set 维护的元素类型
public class ConcurrentSkipListSet<E>
一个基于 ConcurrentSkipListMap
的可缩放并发 NavigableSet
实现。set 的元素可以根据它们的自然顺序进行排序,也可以根据创建 set 时所提供的 Comparator
进行排序,具体取决于使用的构造方法。
此实现为 contains、add、remove 操作及其变体提供预期平均 log(n) 时间开销。多个线程可以安全地并发执行插入、移除和访问操作。迭代器是弱一致 的,返回的元素将反映迭代器创建时或创建后某一时刻的 set 状态。它们不 抛出 ConcurrentModificationException
,可以并发处理其他操作。升序排序视图及其迭代器比降序排序视图及其迭代器更快。
请注意,与在大多数 collection 中不同,这里的 size 方法不是 一个固定时间 (constant-time) 操作。由于这些 set 的异步特性,确定元素的当前数目需要遍历元素。此外,批量操作 addAll、removeAll、retainAll 和 containsAll 并不 保证能以原子方式 (atomically) 执行。例如,与 addAll 操作一起并发操作的迭代器只能查看某些附加元素。
此类及其迭代器实现 Set
和 Iterator
接口的所有可选 方法。与大多数其他并发 collection 实现一样,此类不允许使用 null 元素,因为无法可靠地将 null 参数及返回值与不存在的元素区分开来。
此类是 Java Collections Framework 的成员。
构造方法摘要 | |
---|---|
ConcurrentSkipListSet() 构造一个新的空 set,该 set 按照元素的自然顺序对其进行排序。 |
|
ConcurrentSkipListSet(Collection<? extends E> c) 构造一个包含指定 collection 中元素的新 set,这个新 set 按照元素的自然顺序对其进行排序。 |
|
ConcurrentSkipListSet(Comparator<? super E> comparator) 构造一个新的空 set,该 set 按照指定的比较器对其元素进行排序。 |
|
ConcurrentSkipListSet(SortedSet<E> s) 构造一个新 set,该 set 所包含的元素与指定的有序 set 包含的元素相同,使用的顺序也相同。 |
方法摘要 | |
---|---|
boolean |
add(E e) 如果此 set 中不包含指定元素,则添加指定元素。 |
E |
ceiling(E e) 返回此 set 中大于等于给定元素的最小元素;如果不存在这样的元素,则返回 null 。 |
void |
clear() 从此 set 中移除所有元素。 |
ConcurrentSkipListSet<E> |
clone() 返回此 ConcurrentSkipListSet 实例的浅表副本。 |
Comparator<? super E> |
comparator() 返回对此 set 中的元素进行排序的比较器;如果此 set 使用其元素的自然顺序,则返回 null。 |
boolean |
contains(Object o) 如果此 set 包含指定的元素,则返回 true。 |
Iterator<E> |
descendingIterator() 返回在此 set 的元素上以降序进行迭代的迭代器。 |
NavigableSet<E> |
descendingSet() 返回此 set 中所包含元素的逆序视图。 |
boolean |
equals(Object o) 比较指定对象与此 set 的相等性。 |
E |
first() 返回此 set 中当前第一个(最低)元素。 |
E |
floor(E e) 返回此 set 中小于等于给定元素的最大元素;如果不存在这样的元素,则返回 null 。 |
NavigableSet<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 中存在指定的元素,则将其移除。 |
boolean |
removeAll(Collection<?> c) 从此 set 中移除包含在指定 collection 中的所有元素。 |
int |
size() 返回此 set 中的元素数目。 |
NavigableSet<E> |
subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) 返回此 set 的部分视图,其元素范围从 fromElement 到 toElement 。 |
NavigableSet<E> |
subSet(E fromElement, E toElement) 返回此 set 的部分视图,其元素从 fromElement(包括)到 toElement(不包括)。 |
NavigableSet<E> |
tailSet(E fromElement) 返回此 set 的部分视图,其元素大于等于 fromElement。 |
NavigableSet<E> |
tailSet(E fromElement, boolean inclusive) 返回此 set 的部分视图,其元素大于(或等于,如果 inclusive 为 true)fromElement 。 |
从类 java.util.AbstractSet 继承的方法 |
---|
hashCode |
从类 java.util.AbstractCollection 继承的方法 |
---|
addAll, containsAll, retainAll, toArray, toArray, toString |
从类 java.lang.Object 继承的方法 |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
从接口 java.util.Set 继承的方法 |
---|
addAll, containsAll, hashCode, retainAll, toArray, toArray |
构造方法详细信息 |
---|
public ConcurrentSkipListSet()
public ConcurrentSkipListSet(Comparator<? super E> comparator)
comparator
- 用于对此 set 进行排序的比较器。如果此参数为
null,则使用元素的
自然顺序。
public ConcurrentSkipListSet(Collection<? extends E> c)
c
- 将组成新 set 的元素
ClassCastException
- 如果
c 中的元素不是
Comparable
,或者无法相互比较
NullPointerException
- 如果指定的 collection 或它的任何元素为 null
public ConcurrentSkipListSet(SortedSet<E> s)
s
- 有序 set,其元素将组成新的 set
NullPointerException
- 如果指定的有序 set 或它的任何元素为 null
方法详细信息 |
---|
public ConcurrentSkipListSet<E> clone()
Cloneable
public int size()
请注意,与在大多数 collection 中不同,此方法在这里不是 一个固定时间 (constant-time) 操作。由于这些 set 的异步特性,确定元素的当前数目需要遍历元素以计算其数目。此外,在执行此方法期间大小可能更改,在这种情况下,返回的结果将不准确。因此,此方法在并发应用程序中通常不是很有用。
Collection<E>
中的
size
Set<E>
中的
size
AbstractCollection<E>
中的
size
public boolean isEmpty()
Collection<E>
中的
isEmpty
Set<E>
中的
isEmpty
AbstractCollection<E>
中的
isEmpty
public boolean contains(Object o)
Collection<E>
中的
contains
Set<E>
中的
contains
AbstractCollection<E>
中的
contains
o
- 检查是否包含在此 set 中的对象
ClassCastException
- 如果指定的元素无法与此 set 中的当前元素进行比较
NullPointerException
- 如果指定的元素为 null
public boolean add(E e)
Collection<E>
中的
add
Set<E>
中的
add
AbstractCollection<E>
中的
add
e
- 要添加到此 set 的元素
ClassCastException
- 如果
e 无法与此 set 中的当前元素进行比较
NullPointerException
- 如果指定的元素为 null
public boolean remove(Object o)
Collection<E>
中的
remove
Set<E>
中的
remove
AbstractCollection<E>
中的
remove
o
- 要从此 set 中移除的对象(如果存在)
ClassCastException
- 如果
o 无法与此 set 中的当前元素进行比较
NullPointerException
- 如果指定的元素为 null
public void clear()
Collection<E>
中的
clear
Set<E>
中的
clear
AbstractCollection<E>
中的
clear
public Iterator<E> iterator()
Iterable<E>
中的
iterator
Collection<E>
中的
iterator
NavigableSet<E>
中的
iterator
Set<E>
中的
iterator
AbstractCollection<E>
中的
iterator
public Iterator<E> descendingIterator()
NavigableSet<E>
中的
descendingIterator
public boolean equals(Object o)
Collection<E>
中的
equals
Set<E>
中的
equals
AbstractSet<E>
中的
equals
o
- 要与此 set 进行相等性比较的对象
Object.hashCode()
,
Hashtable
public boolean removeAll(Collection<?> c)
Collection<E>
中的
removeAll
Set<E>
中的
removeAll
AbstractSet<E>
中的
removeAll
c
- 包含要从此 set 中移除的元素的 collection
ClassCastException
- 如果此 set 中一个或多个元素的类型与指定的 collection 不兼容
NullPointerException
- 如果指定的 collection 或其任何元素为 null
AbstractCollection.remove(Object)
,
AbstractCollection.contains(Object)
public E lower(E e)
NavigableSet
复制的描述
null
。
NavigableSet<E>
中的
lower
e
- 要匹配的值
e
的最大元素;如果不存在这样的元素,则返回
null
ClassCastException
- 如果指定元素不能与 set 中的当前元素进行比较
NullPointerException
- 如果指定的元素为 null
public E floor(E e)
NavigableSet
复制的描述
null
。
NavigableSet<E>
中的
floor
e
- 要匹配的值
e
的最大元素;如果不存在这样的元素,则返回
null
ClassCastException
- 如果指定元素不能与 set 中的当前元素进行比较
NullPointerException
- 如果指定的元素为 null
public E ceiling(E e)
NavigableSet
复制的描述
null
。
NavigableSet<E>
中的
ceiling
e
- 要匹配的值
e
的最小元素;如果不存在这样的元素,则返回
null
ClassCastException
- 如果指定元素不能与 set 中的当前元素进行比较
NullPointerException
- 如果指定的元素为 null
public E higher(E e)
NavigableSet
复制的描述
null
。
NavigableSet<E>
中的
higher
e
- 要匹配的值
e
的最小元素;如果不存在这样的元素,则返回
null
ClassCastException
- 如果指定元素不能与 set 中的当前元素进行比较
NullPointerException
- 如果指定的元素为 null
public E pollFirst()
NavigableSet
复制的描