并发集合框架

简介

Java语言中的集合框架父接口是Iterable,通过此接口我们就可以的知道现在Collection接口中主要有哪些功能,如图:

在这里插入图片描述
可以看到Collection接口中主要包括这三类接口的抽象,具体实现都是基于这些接口。

总体介绍

Iterable接口

Iterable接口的主要作用就是迭代循环,接口声明如下:

在这里插入图片描述

iterator是一个抽象方法,此方法返回Iterator对象,以进行循环处理,foreach是1.8增加的默认方法,此方法在接口中已经实现,是for循环的语法糖,spliterator也1.8新增加的默认方法,它的作用是将一个集合分割,对每一个Spliterator使用不同的线程处理,增加其性能,符合fail-fast准则。

Collection接口

Collection接口提供了集合框架最主要、最常用的操作,接口结构如下:

在这里插入图片描述

接口提供的方法主要是针对数据的增删改查,removeIf(Predicate<? super E> filter),spliterator() ,stream(),parallelStream(),这四个方法为1.8新增的默认方法,removeIf是可以根据某个条件删除集合中的元素,内部实现遵循fail-fast原则,spliterator()和Iterable中的实现是一样的,stream()和parallerStream()是将集合转换为数据流,方便对集合的数据进行多次处理,得到最终想要的结果。

List接口

List接口对Collection接口进行了扩展,允许根据索引位置操作数据,并且内容允许重复,接口结构如下:

在这里插入图片描述

接口List最常用的非并发实现类就是ArrayList,它是非线程安全,该类实现了List接口,可以对数据以数组的形式进行组织,使数据有序排序,ArrayList类并不是线程安全的,如果想使用线程安全的链接则可以使用Vector类,Vector类是线程安全的,所以在多线程并发操作数据时也可以无误地处理集合中的数据,但是要注意的是Vector类并不支持Iterator并发删除,此外Vector类有一个子类Stack,它可以实现后进先出(LIFO)的功能。

Set接口

Set接口是对Collection接口进行扩展,它具有的默认特点是内容不允许重复,排序方式为自然排序,防止元素重复的原理是元素需要重写hashcode()和equals()方法,接口结构如下:

在这里插入图片描述

Set接口最常用的不支持并发的实现类就是HashSet,HashSet默认以无序的方式组织元素,而LinkedHashSet类 可以有序的组织元素,接口Set还有一个实现类,就是TreeSet,它不仅实现了Set接口,而且还实现了SortedSet和NavigableSet接口,而SortedSet接口的父接口为Set,SortedSet和Navigable接口在功能上得到了扩展,比如可以获取Set中内容的子集,支持对表头和表尾的数据进行获取等

Queue接口

Queue接口是对Collection接口进行扩展,它具有的特点是可以方便地操作队列首部元素,接口声明如下:

在这里插入图片描述

Queue接口的非并发实现类有PriorityQueue,它是一个基于优先级的无界优先级队列

Deque接口

Queue接口支持对队列头的操作,而接口Deque为双端队列,不仅支持对队列头进行操作,而且还支持对队尾的操作,Deque接口的非并发实现类有ArrayDeque和LinkedList,它们之间的区别是:如果只想实现从队列两端获取数据则使用ArrayDeque,如果想实现从队列两端获取数据时还可以根据索引的位置操作数据则使用LinkedList

非阻塞队列

非阻塞队列的特点就是队列里面没有数据时,操作队列出现异常或返回null,不具有等待/阻塞的功能
在JDK的并发包中,常见的非阻塞队列有:
  1. ConcurrentHashMap
  2. ConcurrentSkipListMap
  3. ConcurrentSkipListSet
  4. ConcurrentLinkedQueue
  5. ConcurrentLinkedDeque
  6. CopyOnWriteArrayList
  7. CopyOnWriteArraySet
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

升仔聊编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值