一、二者的关系
1、Quene以及Deque都是继承于Collection,Deque是Quene的子接口。
public interface Deque<E> extends Queue<E>
Quene是先进先出的单向队列,Deque是双向队列。
2、下表列出了Deque与Queue相对应的接口:
3、下表列出了Deque与Stack对应的接口:
二、Quene接口
1、Quene是集合框架Collection的子接口,是一种常见的数据结构,Quene有一个直接子类PriorityQuene,队列Quene是一种常用的数据结构,可以将队列看作是一种特殊的线性表,该结构遵循的先进先出原则。Java中,LinkedList实现了Quene接口,因为LinkedList进行插入、删除操作效率较高。
poll():将队首的元素删除,并返回该元素。
peek():返回队首的元素,但不进行删除操作。
offer():将元素添加到队尾,如果成功,则返回true。
2、Quene的具体代码操作
package com.edu.leetcode;
import java.util.*;
public class QueneDemo {
public static void testQuene(){
Queue<String> qu = new LinkedList<>();
qu.add("苹果");
qu.add("华为");
System.out.println("原始队列:");
System.out.println(qu);
System.out.println("通过add往队尾添加元素:");
qu.add("OPPO");
System.out.println(qu);
System.out.println("通过offer往队列尾添加元素:");
qu.offer("vivo");
System.out.println(qu);
System.out.println("使用remove删除队列头元素:");
qu.remove();
System.out.println(qu);
System.out.println("使用poll删除对列头元素:");
qu.poll();
System.out.println(qu);
}
public static void main(String[] args){
QueneDemo.testQuene();
}
}
执行结果如下:
// An highlighted block
原始队列:
[苹果, 华为]
通过add往队尾添加元素:
[苹果, 华为, OPPO]
通过offer往队列尾添加元素:
[苹果, 华为, OPPO, vivo]
使用remove删除队列头元素:
[华为, OPPO, vivo]
使用poll删除对列头元素:
[OPPO, vivo]
三、Deque接口(双向队列)
1、双端队列(Deque),是Quene是一个子接口,双向队列是指该队列两端的元素既能入队(offer)也能出队(poll),如果将Deque限制为只能从一端入队(push)和出队(pop),则可限制栈的数据结构。对于栈而言,有入栈,遵循先进后出原则。
它既可以当作栈使用,也可以当作队列使用
add()\offer(e):将元素增加到队列的末尾,如果成功,返回true。
remove()\poll():将元素从队列的队首删除。
element()\peek():返回队首的元素,但不进行删除
栈:
push(e):入栈,添加到队首
pop(e):出栈,删除队首元素
peek():返回栈首元素,但不进行删除
参考链接:
[1] 参考链接.