Java集合包

Java集合主体内容包括Collection集合和Map类;而Collection集合又可以划分为List(队列)和Set(集合)。
1. List的实现类主要有: LinkedList, ArrayList, Vector, Stack。
(01) LinkedList是双向链表实现的双端队列;它不是线程安全的,只适用于单线程。
(02) ArrayList是数组实现的队列,它是一个动态数组;它也不是线程安全的,只适用于单线程。
(03) Vector是数组实现的矢量队列,它也一个动态数组;不过和ArrayList不同的是,Vector是线程安全的,它支持并发。
(04) Stack是Vector实现的栈;和Vector一样,它也是线程安全的。
2. Set的实现类主要有: HastSet和TreeSet。
(01) HashSet是一个没有重复元素的集合,它通过HashMap实现的;HashSet不是线程安全的,只适用于单线程。
(02) TreeSet也是一个没有重复元素的集合,不过和HashSet不同的是,TreeSet中的元素是有序的;它是通过TreeMap实现的;TreeSet也不是线程安全的,只适用于单线程。
3.Map的实现类主要有: HashMap,WeakHashMap, Hashtable和TreeMap。
(01) HashMap是存储“键-值对”的哈希表;它不是线程安全的,只适用于单线程。
(02) WeakHashMap是也是哈希表;和HashMap不同的是,HashMap的“键”是强引用类型,而WeakHashMap的“键”是弱引用类型,也就是说当WeakHashMap 中的某个键不再正常使用时,会被从WeakHashMap中被自动移除。WeakHashMap也不是线程安全的,只适用于单线程。
(03) Hashtable也是哈希表;和HashMap不同的是,Hashtable是线程安全的,支持并发。
(04) TreeMap也是哈希表,不过TreeMap中的“键-值对”是有序的,它是通过R-B Tree(红黑树)实现的;TreeMap不是线程安全的,只适用于单线程。
更多关于这些集合类的介绍,可以参考“Java 集合系列目录(Category)”。
为了方便,我们将前面介绍集合类统称为”java集合包“。java集合包大多是“非线程安全的”,虽然可以通过Collections工具类中的方法获取java集合包对应的同步类,但是这些同步类的并发效率并不是很高。为了更好的支持高并发任务,并发大师Doug Lea在JUC(java.util.concurrent)包中添加了java集合包中单线程类的对应的支持高并发的类。例如,ArrayList对应的高并发类是CopyOnWriteArrayList,HashMap对应的高并发类是ConcurrentHashMap,等等。
JUC包在添加”java集合包“对应的高并发类时,为了保持API接口的一致性,使用了”Java集合包“中的框架。例如,CopyOnWriteArrayList实现了“Java集合包”中的List接口,HashMap继承了“java集合包”中的AbstractMap类,等等。得益于“JUC包使用了Java集合包中的类”,如果我们了解了Java集合包中的类的思想之后,理解JUC包中的类也相对容易;理解时,最大的难点是,对JUC包是如何添加对“高并发”的支持的!
JUC中的集合类
下面,我们先了解JUC包中集合类的框架;为了方便讲诉,我将JUC包中的集合类划分为3部分来进行说明。在简单的了解JUC包中集合类的框架之后,后面的章节再逐步对各个类进行介绍。
1. List和Set
JUC集合包中的List和Set实现类包括: CopyOnWriteArrayList, CopyOnWriteArraySet和ConcurrentSkipListSet。
ConcurrentSkipListSet稍后在说明Map时再说明,CopyOnWriteArrayList 和 CopyOnWriteArraySet的框架如下图所示:
(01) CopyOnWriteArrayList相当于线程安全的ArrayList,它实现了List接口。CopyOnWriteArrayList是支持高并发的。
(02) CopyOnWriteArraySet相当于线程安全的HashSet,它继承于AbstractSet类。CopyOnWriteArraySet内部包含一个CopyOnWriteArrayList对象,它是通过CopyOnWriteArrayList实现的。
2. Map
JUC集合包中Map的实现类包括: ConcurrentHashMap和ConcurrentSkipListMap。它们的框架如下图所示:
(01) ConcurrentHashMap是线程安全的哈希表(相当于线程安全的HashMap);它继承于AbstractMap类,并且实现ConcurrentMap接口。ConcurrentHashMap是通过“锁分段”来实现的,它支持并发。
(02) ConcurrentSkipListMap是线程安全的有序的哈希表(相当于线程安全的TreeMap); 它继承于AbstractMap类,并且实现ConcurrentNavigableMap接口。ConcurrentSkipListMap是通过“跳表”来实现的,它支持并发。
(03) ConcurrentSkipListSet是线程安全的有序的集合(相当于线程安全的TreeSet);它继承于AbstractSet,并实现了NavigableSet接口。ConcurrentSkipListSet是通过ConcurrentSkipListMap实现的,它也支持并发。
3. Queue
JUC集合包中Queue的实现类包括: ArrayBlockingQueue, LinkedBlockingQueue, LinkedBlockingDeque, ConcurrentLinkedQueue和ConcurrentLinkedDeque。它们的框架如下图所示:
(01) ArrayBlockingQueue是数组实现的线程安全的有界的阻塞队列。
(02) LinkedBlockingQueue是单向链表实现的(指定大小)阻塞队列,该队列按 FIFO(先进先出)排序元素。
(03) LinkedBlockingDeque是双向链表实现的(指定大小)双向并发阻塞队列,该阻塞队列同时支持FIFO和FILO两种操作方式。
(04) ConcurrentLinkedQueue是单向链表实现的无界队列,该队列按 FIFO(先进先出)排序元素。
(05) ConcurrentLinkedDeque是双向链表实现的无界队列,该队列同时支持FIFO和FILO两种操作方式。
# java
# concurrency集合
# concurrency
# Java concurrency集合之CopyOnWriteArraySet_动力节点Java学院整
# Java concurrency集合之ConcurrentLinkedQueue_动力节点Java学
# Java concurrency集合之ConcurrentSkipListMap_动力节点Java学
# Java concurrency集合之ConcurrentSkipListSet_动力节点Java学
# Java concurrency集合之ConcurrentHashMap_动力节点Java学院整理
# Java concurrency集合之ArrayBlockingQueue_动力节点Java学院整理
# Java concurrency集合之 CopyOnWriteArrayList_动力节点Java学
# Java concurrency集合之LinkedBlockingDeque_动力节点Java学院整
# 包中
# 适用于
# 单线程
# 的是
# 它是
# 链表
# 所示
# 它也
# 如下图
# 两种
# 实现了
# 主要有
# 来实现
# 划分为
# 是一个
# 使用了
# 无界
# 很高
# 可以通过
# 我将
相关文章:
如何在万网自助建站平台快速创建网站?
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
制作表格网站有哪些,线上表格怎么弄?
宿州网站制作公司兴策,安徽省低保查询网站?
如何通过可视化优化提升建站效果?
制作农业网站的软件,比较好的农业网站推荐一下?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
php json中文编码为null的解决办法
黑客如何利用漏洞与弱口令入侵网站服务器?
家具网站制作软件,家具厂怎么跑业务?
如何在服务器上三步完成建站并提升流量?
如何在腾讯云服务器上快速搭建个人网站?
如何将凡科建站内容保存为本地文件?
如何撰写建站申请书?关键要点有哪些?
,交易猫的商品怎么发布到网站上去?
独立制作一个网站多少钱,建立网站需要花多少钱?
如何在IIS中配置站点IP、端口及主机头?
网站制作模板下载什么软件,ppt模板免费下载网站?
建站主机CVM配置优化、SEO策略与性能提升指南
如何用y主机助手快速搭建网站?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
,购物网站怎么盈利呢?
广德云建站网站建设方案与建站流程优化指南
已有域名如何免费搭建网站?
孙琪峥织梦建站教程如何优化数据库安全?
如何在景安云服务器上绑定域名并配置虚拟主机?
网站制作公司排行榜,四大门户网站排名?
如何选择高性价比服务器搭建个人网站?
,有什么在线背英语单词效率比较高的网站?
如何用wdcp快速搭建高效网站?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
建站之星如何一键生成手机站?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
装修招标网站设计制作流程,装修招标流程?
开心动漫网站制作软件下载,十分开心动画为何停播?
存储型VPS适合搭建中小型网站吗?
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
如何在景安服务器上快速搭建个人网站?
如何通过西部建站助手安装IIS服务器?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
魔方云NAT建站如何实现端口转发?
微信h5制作网站有哪些,免费微信H5页面制作工具?
已有域名能否直接搭建网站?
太原网站制作公司有哪些,网约车营运证查询官网?
香港网站服务器数量如何影响SEO优化效果?
已有域名和空间如何快速搭建网站?
如何用IIS7快速搭建并优化网站站点?
*请认真填写需求信息,我们会在24小时内与您取得联系。