java.util.concurrent
类 ConcurrentSkipListSet<E>

java.lang.Object
  继承者 java.util.AbstractCollection<E>
      继承者 java.util.AbstractSet<E>
          继承者 java.util.concurrent.ConcurrentSkipListSet<E>
类型参数:
E - 此 set 维护的元素类型
所有已实现的接口:
Serializable, Cloneable, Iterable<E>, Collection<E>, NavigableSet<E>, Set<E>, SortedSet<E>

public class ConcurrentSkipListSet<E>
   
   
   
extends AbstractSet<E>
implements NavigableSet<E>, Cloneable, Serializable

一个基于 ConcurrentSkipListMap 的可缩放并发 NavigableSet 实现。set 的元素可以根据它们的自然顺序进行排序,也可以根据创建 set 时所提供的 Comparator 进行排序,具体取决于使用的构造方法。

此实现为 containsaddremove 操作及其变体提供预期平均 log(n) 时间开销。多个线程可以安全地并发执行插入、移除和访问操作。迭代器是弱一致 的,返回的元素将反映迭代器创建时或创建后某一时刻的 set 状态。它们 抛出 ConcurrentModificationException,可以并发处理其他操作。升序排序视图及其迭代器比降序排序视图及其迭代器更快。

请注意,与在大多数 collection 中不同,这里的 size 方法不是 一个固定时间 (constant-time) 操作。由于这些 set 的异步特性,确定元素的当前数目需要遍历元素。此外,批量操作 addAllremoveAllretainAllcontainsAll并不 保证能以原子方式 (atomically) 执行。例如,与 addAll 操作一起并发操作的迭代器只能查看某些附加元素。

此类及其迭代器实现 SetIterator 接口的所有可选 方法。与大多数其他并发 collection 实现一样,此类不允许使用 null 元素,因为无法可靠地将 null 参数及返回值与不存在的元素区分开来。

此类是 Java Collections Framework 的成员。

从以下版本开始:
1.6
另请参见:
序列化表格

构造方法摘要
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 包含的元素相同,使用的顺序也相同。
 
方法摘要
 booleanadd(E e)
          如果此 set 中不包含指定元素,则添加指定元素。
 Eceiling(E e)
          返回此 set 中大于等于给定元素的最小元素;如果不存在这样的元素,则返回 null
 voidclear()
          从此 set 中移除所有元素。
 ConcurrentSkipListSet<E>clone()
          返回此 ConcurrentSkipListSet 实例的浅表副本。
 Comparator<? super E>comparator()
          返回对此 set 中的元素进行排序的比较器;如果此 set 使用其元素的自然顺序,则返回 null
 booleancontains(Object o)
          如果此 set 包含指定的元素,则返回 true
 Iterator<E>descendingIterator()
          返回在此 set 的元素上以降序进行迭代的迭代器。
 NavigableSet<E>descendingSet()
          返回此 set 中所包含元素的逆序视图。
 booleanequals(Object o)
          比较指定对象与此 set 的相等性。
 Efirst()
          返回此 set 中当前第一个(最低)元素。
 Efloor(E e)
          返回此 set 中小于等于给定元素的最大元素;如果不存在这样的元素,则返回 null
 NavigableSet<E>headSet(E toElement)
          返回此 set 的部分视图,其元素严格小于 toElement
 NavigableSet<E>headSet(E toElement, boolean inclusive)
          返回此 set 的部分视图,其元素小于(或等于,如果 inclusive 为 true)toElement
 Ehigher(E e)
          返回此 set 中严格大于给定元素的最小元素;如果不存在这样的元素,则返回 null
 booleanisEmpty()
          如果此 set 不包含任何元素,则返回 true
 Iterator<E>iterator()
          返回在此 set 的元素上以升序进行迭代的迭代器。
 Elast()
          返回此 set 中当前最后一个(最高)元素。
 Elower(E e)
          返回此 set 中严格小于给定元素的最大元素;如果不存在这样的元素,则返回 null
 EpollFirst()
          获取并移除第一个(最低)元素;如果此 set 为空,则返回 null
 EpollLast()
          获取并移除最后一个(最高)元素;如果此 set 为空,则返回 null
 booleanremove(Object o)
          如果此 set 中存在指定的元素,则将其移除。
 booleanremoveAll(Collection<?> c)
          从此 set 中移除包含在指定 collection 中的所有元素。
 intsize()
          返回此 set 中的元素数目。
 NavigableSet<E>subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
          返回此 set 的部分视图,其元素范围从 fromElementtoElement
 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
 

构造方法详细信息

ConcurrentSkipListSet

public ConcurrentSkipListSet()
构造一个新的空 set,该 set 按照元素的自然顺序对其进行排序。


ConcurrentSkipListSet

public ConcurrentSkipListSet(Comparator<? super E> comparator)
构造一个新的空 set,该 set 按照指定的比较器对其元素进行排序。

参数:
comparator - 用于对此 set 进行排序的比较器。如果此参数为 null,则使用元素的自然顺序

ConcurrentSkipListSet

public ConcurrentSkipListSet(Collection<? extends E> c)
构造一个包含指定 collection 中元素的新 set,这个新 set 按照元素的自然顺序对其进行排序。

参数:
c - 将组成新 set 的元素
抛出:
ClassCastException - 如果 c 中的元素不是 Comparable,或者无法相互比较
NullPointerException - 如果指定的 collection 或它的任何元素为 null

ConcurrentSkipListSet

public ConcurrentSkipListSet(SortedSet<E> s)
构造一个新 set,该 set 所包含的元素与指定的有序 set 包含的元素相同,使用的顺序也相同。

参数:
s - 有序 set,其元素将组成新的 set
抛出:
NullPointerException - 如果指定的有序 set 或它的任何元素为 null
方法详细信息

clone

public ConcurrentSkipListSet<E> clone()
返回此 ConcurrentSkipListSet 实例的浅表副本。(这些元素本身没有复制。)

覆盖:
Object 中的 clone
返回:
此 set 的浅表副本
另请参见:
Cloneable

size

public int size()
返回此 set 中的元素数目。如果此 set 包含的元素数大于 Integer.MAX_VALUE,则返回 Integer.MAX_VALUE

请注意,与在大多数 collection 中不同,此方法在这里不是 一个固定时间 (constant-time) 操作。由于这些 set 的异步特性,确定元素的当前数目需要遍历元素以计算其数目。此外,在执行此方法期间大小可能更改,在这种情况下,返回的结果将不准确。因此,此方法在并发应用程序中通常不是很有用。

指定者:
接口 Collection<E> 中的 size
指定者:
接口 Set<E> 中的 size
指定者:
AbstractCollection<E> 中的 size
返回:
此 set 中的元素数

isEmpty

public boolean isEmpty()
如果此 set 不包含任何元素,则返回 true

指定者:
接口 Collection<E> 中的 isEmpty
指定者:
接口 Set<E> 中的 isEmpty
覆盖:
AbstractCollection<E> 中的 isEmpty
返回:
如果此 set 不包含任何元素,则返回 true