Queue
public interface Queue<E> extends Collection<E> {
Dqueue
public interface Deque<E> extends Queue<E>, SequencedCollection<E> {
ArrayQueue
public class ArrayDeque<E> extends AbstractCollection<E>
implements Deque<E>, Cloneable, Serializable
AbstractQueue
public abstract class AbstractQueue<E>
extends AbstractCollection<E>
implements Queue<E> {
PriorityQueue
public class PriorityQueue<E> extends AbstractQueue<E>
implements java.io.Serializable {
Queue的操作:
队尾添加元素:add(已满抛出异常)、offer(已满返回false)、 队头删除元素:remove(为空抛出异常)、poll(为空返回null)、 获取头部元素:element(为空抛出异常)、peek(为空返回null)、
Deque
添加元素:addFirst、addLast、offerFirst、offerLast 删除元素:removeFirst、removeLast、pollFirst、pollLast 获取元素:getFirst、getLast、peekFirst、peekLast
BlockingQueue
- PriorityBlockingQueue
public class PriorityBlockingQueue<E> extends AbstractQueue<E>
implements BlockingQueue<E>, java.io.Serializable {
- DelayQueue
public class DelayQueue<E extends Delayed> extends AbstractQueue<E>
implements BlockingQueue<E> {
private final transient ReentrantLock lock = new ReentrantLock();
private final PriorityQueue<E> q = new PriorityQueue<E>();
Vector
public class PriorityQueue<E> extends AbstractQueue<E>
implements java.io.Serializable {
Stack
public class Stack<E> extends Vector<E> {
Java双端队列
可以使用 ArrayDeque,LinkedList
- LinkedList定义
Java
复制代码
public class LinkedList<E> extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable
- ArrayDeque定义
Java
复制代码
public class ArrayDeque<E> extends AbstractCollection<E>
implements Deque<E>, Cloneable, Serializable
- 代码
Java
复制代码
import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.LinkedList;
public class TestDeque {
public static void main(String[] args) {
java.util.Deque<Integer> dq = new LinkedList<>();
dq.offerLast(5);
dq.offerLast(6);
dq.offerFirst(3);
dq.offerFirst(1);
String ret = Arrays.toString(dq.toArray());//[1, 3, 5, 6]
System.out.println(ret);
Integer a = dq.peekFirst();
Integer b = dq.peekLast();
Integer c = dq.peek();
System.out.println(Arrays.toString(new Integer[]{a, b, c}));//[1, 6, 1]
Integer d = dq.pollFirst();
Integer e = dq.pollLast();
Integer f = dq.poll();
System.out.println(Arrays.toString(new Integer[]{d, e, f}));//[1, 6, 3]
}
}