Java并发集合之ConcurrentSkipListSet_动力节点Java学院整理

  

<强> ConcurrentSkipListSet介绍

  

ConcurrentSkipListSet是线程安全的有序的集合,适用于高并发的场景。
  TreeSet ConcurrentSkipListSet和(它们虽然都是有序的集合。但是,第一,它们的线程安全机制不同,TreeSet是非线程安全的,而ConcurrentSkipListSet是线程安全的第。二,ConcurrentSkipListSet是通过ConcurrentSkipListMap实现的,而TreeSet是通过TreeMap实现的。

  

, <强> ConcurrentSkipListSet原理和数据结构

  

ConcurrentSkipListSet的数据结构,如下图所示:

  

癑ava并发集合之ConcurrentSkipListSet_动力节点Java学院整理"

  

<强>说明:
  

  

(01) ConcurrentSkipListSet继承于套抽象。因此,它本质上是一个集合。
  (02)ConcurrentSkipListSet实现了NavigableSet接口,因此,ConcurrentSkipListSet是一个有序的集合。
  (03)ConcurrentSkipListSet是通过ConcurrentSkipListMap实现的。它包含一个ConcurrentNavigableMap对象m,而m对象实际上是ConcurrentNavigableMap的实现类ConcurrentSkipListMap的实例.ConcurrentSkipListMap中的元素是键值键值对,而ConcurrentSkipListSet是集合,它只用到了ConcurrentSkipListMap中的钥匙!,

  

<强> ConcurrentSkipListSet函数列表

     //构造一个新的空集合,该集合按照元素的自然顺序对其进行排序。   ConcurrentSkipListSet ()//构造一个包含指定集合中元素的新集合,这个新组按照元素的自然顺序对其进行排序。   ConcurrentSkipListSet (Collection<& # 63;E>延伸;c)//构造一个新的空集合,该集合按照指定的比较器对其元素进行排序。   ConcurrentSkipListSet (Comparator<& # 63;超级E>比较器)//构造一个新设置,该设置所包含的元素与指定的有序集包含的元素相同,使用的顺序也相同。   ConcurrentSkipListSet (SortedSets)//如果此集合中不包含指定元素,则添加指定元素。   布尔加(E E)//返回此组中大于等于给定元素的最小元素,如果不存在这样的元素,则返回零。   E上限(E E)//从此组中移除所有元素。   空白clear ()//返回此ConcurrentSkipListSet实例的浅表副本。   ConcurrentSkipListSet克隆()//返回对中此集的元素进行排序的比较器;如果此设置使用其元素的自然顺序,则返回零。   Comparator<& # 63;超级E>比较器()//如果此组包含指定的元素,则返回现实。   布尔(包含对象o)//返回在此集合的元素上以降序进行迭代的迭代器。   IteratordescendingIterator ()//返回此集合中所包含元素的逆序视图。   NavigableSetdescendingSet ()//比较指定对象与此组的相等性。   布尔=(对象o)//返回此组中当前第一个(最低)元素。   E第()//返回此组中小于等于给定元素的最大元素,如果不存在这样的元素,则返回零。   E层(E E)//返回此组的部分视图,其元素严格小于toElement。   NavigableSet耳机(E toElement)//返回此组的部分视图,其元素小于(或等于,如果包容为true) toElement。   NavigableSet耳机(E toElement,布尔包容)//返回此组中严格大于给定元素的最小元素,如果不存在这样的元素,则返回零。   E更高(E E)//如果此设置不包含任何元素,则返回现实。   布尔isEmpty ()//返回在此集合的元素上以升序进行迭代的迭代器。   Iterator迭代器()//返回此组中当前最后一个(最高)元素。   去年(E)//返回此组中严格小于给定元素的最大元素,如果不存在这样的元素,则返回零。   E低(E E)//获取并移除第一个(最低)元素,如果此设置为空,则返回零。   E pollFirst ()//获取并移除最后一个(最高)元素,如果此设置为空,则返回零。   E pollLast ()//如果此组中存在指定的元素,则将其移除。   逻辑删除对象(o)//从此组中移除包含在指定中集合的所有元素。   布尔removeAll (Collection<& # 63;比;c)//返回此组中的元素数目。   int大小()//返回此组的部分视图,其元素范围从fromElement到toElement。   NavigableSet子集(E fromElement布尔fromInclusive E toElement,布尔toInclusive)//返回此组的部分视图,其元素从fromElement(包括)到toElement(不包括)。   NavigableSetfromElement子集(E, E toElement)//返回此组的部分视图,其元素大于等于fromElement。   NavigableSettailSet (E fromElement)//返回此组的部分视图,其元素大于(或等于,如果包容为true) fromElement。   NavigableSettailSet (E fromElement,布尔包容)   之前      

ConcurrentSkipListSet是通过ConcurrentSkipListMap实现的,它的接口基本上都是通过调用ConcurrentSkipListMap接口来实现的。这里就不再对它的源码进行分析了只

Java并发集合之ConcurrentSkipListSet_动力节点Java学院整理