Deque接口

版权声明:本文为博主原创文章,可以随意转载,但是必须在开头标明出处。 https://blog.csdn.net/qq_29951983/article/details/82116796

线性集合,支持两端插入和移除元素。 名称deque是“双端队列”的缩写,通常发音为“deck”[dek]。
此接口定义了访问双端队列两端元素的方法。 提供了插入,移除和检查元素的方法。 这些方法中的每一种都以两种形式存在:一种在操作失败时抛出异常,另一种返回特殊值(null或false,具体取决于操作)。 后一种形式的插入操作专门设计用于容量限制的Deque实现; 在大多数实现中,插入操作不会失败。

这里写图片描述

该接口既可以用作FIFO(先进先出)也可以用作LIFO(后进先出)。

此接口提供了两种方法来删除内部元素,removeFirstOccurrence和removeLastOccurrence。

与List接口不同,此接口不支持对元素的索引访问。

ArrayDeque

实现Deque接口的可调整大小的数组实现。ArrayDeque没有容量限制;他们根据需要增长以支持使用。它们不是线程安全的;在没有外部同步的情况下,它们不支持多线程的并发访问。禁止使用空元素。当用作堆栈时,此类可能比Stack快,并且在用作队列时比LinkedList更快。
关于源码讲解:
Java ArrayDeque源码剖析

LinkedBlockingDeque

实现了BlockingDeque接口,是双向并发阻塞队列。
基于链接节点的可选绑定阻塞双端队列。
可选的容量绑定构造函数参数用作防止过度扩展的方法。 如果未指定,则容量等于Integer.MAX_VALUE。 如果没超出容量,每次插入时都会动态创建链接节点;
参考链接:
oracle
Java多线程系列–“JUC集合”09之 LinkedBlockingDeque

ConcurrentLinkedDeque

基于链接节点的无界并发双端队列。并发插入,删除和访问操作可跨多个线程安全执行。当许多线程共享对公共集合的访问权时,ConcurrentLinkedDeque是一个合适的选择。与大多数其他并发集合实现一样,此类不允许使用null元素。
例子

猜你喜欢

转载自blog.csdn.net/qq_29951983/article/details/82116796
今日推荐