java集合系列10 Deque
来源:互联网 发布:淘宝联盟怎么申请网站 编辑:程序博客网 时间:2024/06/06 02:01
前言
Deque 双端队列 继承了 Queue
Deque
文档介绍
一个线性collection,支持在两端插入和删除。deque 是 “double ended queue”的缩写。绝大多数的Deque实现对它们能包含的元素数没有固定的限制,但此接口支持容量限制,也支持没有固定大小限制的双端队列。
此接口定义了访问队列两端元素的方法。提供了插入,移除,检查元素的方法。这些的每个方法存在两种形式:如果失败一种抛出一个异常,一种返回一个特殊值(null 或 false, 依赖于具体的操作)。后一种形式的插入操作用于具有容量限制的特殊双端队列;在大多数实现中,插入操作不会失败。
上面介绍的十二个方法的概括
有意义的方法名 offer(提供) poll(剪短) peek(偷窃)
此接口扩展了Queue接口。在将双端队列用于队列时,将得到FIFO(先进先出)行为。将元素添加到双端队列的末尾,从双端队列的开头移除元素。从Queue接口继承的方法完全等效于Deque方法,展示在下表
双端队列也可用于后进先出堆栈。就优先使用此接口而不是遗留Stack类,当一个双端队列被用作堆栈时。Stack与Deque完全等价的方法在下面的表格展示
注意,在将双端队列用作队列或堆栈时,peek方法同样正常工作;无论哪种情况下,都从双端队列的开头抽取元素
此接口提供了两种移除内部元素的方法:removeFirstOccurrence 和 removeLastOccurrence
与List接口不同,此接口不支持通过索引访问元素。
虽然Deque实现没有严格要求禁止插入null元素,但强烈建议最好这样做。建议使用任何允许null元素的实现的双端队列的用户不利用插入null的功能。这因为当双端队列为空时好多方法将null作为特殊的返回值
Deque 实现通常不定义基于元素的 equals 和 hashCode 方法,而是从 Object 类继承基于身份的 equals 和 hashCode 方法。
源码
public interface Deque<E> extends Queue<E>{ void addFirst(E e); void addLast(E e); boolean offerFirst(E e); boolean offerLast(E e); E removeFirst(); E removeLast(); E pollFirst(); E pollLast(); E getFirst(); E getLast(); E peekFirst(); E peekLast(); boolean removeFirstOccurrence(Object o); boolean removeLastOccurrence(Object o); //队列的方法 boolean add(E e); boolean offer(E e); E remove(); E poll(); E element(); E peek(); //堆栈的方法 void push(E e); E pop(); //集合的方法 boolean remove(Object o); boolean contains(Object o); public int size(); Iterator<E> iterator(); Iterator<E> descendingIterator();}
- java集合系列10 Deque
- 深入java集合系列:双端队列deque
- 深入理解Java集合框架系列 -第六章 Java集合框架Deque
- Java 集合深入理解(10):Deque 双端队列
- Java 集合深入理解(10):Deque 双端队列
- Java 集合深入理解(10):Deque 双端队列
- Java集合之Queue和Deque接口
- Java常见集合框架(十八): Deque之Deque、BlockingDeque、LinkedBlockingDeque、ArrayDeque
- Java集合框架官方教程(2):Queue/Deque/Map接口
- java的Set、Map、Deque集合;实现排序
- Java集合系列(10)--TreeSet
- 双向队列集合 Deque
- Java 集合系列解析
- java集合框架系列
- Java 集合系列
- 【Java集合系列】---ArrayList
- 【java集合系列】--- LinkedList
- 【java集合系列】---HashSet
- Vijos 1772题:巧妙填数
- Android手机开发总结
- Oracle学习笔记--day04
- eclipse常用快捷键
- Nessus-6.10 centos 64位安装
- java集合系列10 Deque
- 关于java的data类型向mysql的datetime中存储的问题
- Oracle学习笔记--day05
- XZ_iOS之控制台使用LLDB去po打印相关信息
- Oracle学习笔记--day06
- C#上传FTP服务器
- JAVA分布式事务原理及应用
- Linux内核配置选项 (经典学习)
- Vijos 1773题:质因数