暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Java高并发系列之CopyOnWriteArraySet源码解析

码农的修炼之道 2018-12-31
219

    上篇文章介绍了CopyOnWriteArrayList的基本源码,本文介绍CopyOnWriteArraySet,这是基于上面的CopyOnWriteArrayList实现的。首先来看看类图,如下:

    从类图来看,这个CopyOnWriteArraySet很简单,它继承了AbstractSet,实现了Serializable接口。在CopyOnWriteArraySet里面,使用了CopyOnWriteArrayList作为变量,也就是操作

CopyOnWriteArraySet其实是委托给里面的CopyOnWriteArrayList完成的。


1、构造函数

     CopyOnWriteArraySet有两个构造函数,分别如下所示:

    其中空参数的构造函数默认创建一个CopyOnWriteArrayList,还有一个构造函数是在构造的时候可以传入一个Collection。这个类似集合框架中的源码。


2、add操作

     add操作是向Set中添加元素,从源码可以看出,还是委托给内部的al来添加元素的。


3、contains操作

    contains操作是判断该set中是否含有某一元素。其底层还是委托给al来实现的。


4、remove操作

      remove操作是从set中删除某一元素,其源码中还是委托给al去处理的。

此外,还有removeAll操作,其原理类似。


5、size操作

   size操作是返回set中元素个数,其源码如下。从源码可以看出,size操作还是委托给类中的成员al去处理的。


6、总结

    CopyOnWriteArraySet其实就是对CopyOnWriteArrayList的一次封装,其操作都是委托给CopyOnWriteArrayList变量去处理的,因此掌握CopyOnWriteArrayList,就了解CopyOnWriteArraySet了。

文章转载自码农的修炼之道,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论