首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >双端队列 【Deque】

双端队列 【Deque】

作者头像
飞询
发布于 2025-08-01 14:52:38
发布于 2025-08-01 14:52:38
3280
举报
文章被收录于专栏:云同步云同步

参考链接

JAVA 栈,为什么要使用Deque,而不推荐使用Stack,Deque中ArrayDeque与LinkedList的区别,Deque方法详解_java 栈为什么用deque-CSDN博客

简介

可以理解成,双端队列就是可以在队头 和 队尾进行操作,比如:查看队头队尾元素,弹出队头队尾元素,或者从队头和队尾插入元素,那也就意味着他可以用来当做 队列 和 栈 的数据结构使用

用法

队列

先进先出的线性数据结构

入队

方法

作用

void addLast(E e)

将指定的元素插入此双端队列的后面 ,空间不足抛异常

boolean offerLast(E e)

将指定的元素插入此双端队列的后面,空间不足返回false

boolean add(E e)

将指定的元素插入此双端队列的后面,空间不足抛异常

boolean offer(E e)

将指定的元素插入此双端队列的后面,空间不足返回false

出队

方法

作用

E removeFirst()/E remove()/E pop()

检索并删除第一个元素,为空时抛出异常

E pollFirst()/ E poll()

检索并删除第一个元素 ,为空时返回null

查看队头元素

方法

作用

E getFirst()/E element()/E pop()

只看第一个元素 ,不出来,为空就抛异常

E peekFirst()/ E peek()

只看第一个元素 ,不出来,为空时返回null

代码案例

代码语言:javascript
复制
public class QueueTest {

    public static void main(String[] args) {
        Deque<Integer> queue = new LinkedList<>();
        // 分别入队 1,2,3
        queue.offer(1);
        queue.offer(2);
        queue.offer(3);
        // 查看元素
        System.out.println(queue.peek());
        // 出队
        System.out.println(queue.poll());
        // 遍历
        for (Integer i : queue) {
            System.out.println(i);
        }
    }

}
代码语言:javascript
复制
1
1
2
3

栈

先进后出的线性数据结构

入栈

方法

作用

addFirst(E e)

将指定的元素插入此双端队列的前面 ,空间不足抛异常

offerFirst(E e)

将指定的元素插入此双端队列的前面 ,空间不足插入失败返回回false

push(E e)

将指定的元素插入此双端队列的前面 ,空间不足抛异常

出栈

方法

作用

E removeFirst()/E remove()/E pop()

检索并删除第一个元素,为空时抛出异常

E pollFirst()/ E poll()

检索并删除第一个元素 ,为空时返回null

查看栈顶元素

方法

作用

E getFirst()/E element()/E pop()

只看第一个元素 ,不出来,为空就抛异常

E peekFirst()/ E peek()

只看第一个元素 ,不出来,为空时返回null

代码案例
代码语言:javascript
复制
public class StackTest {

    public static void main(String[] args) {
        Deque<Integer> stack = new LinkedList<>();
        // 分别入栈 1,2,3
        stack.push(1);
        stack.push(2);
        stack.push(3);
        // 查看栈顶元素
        System.out.println(stack.peek());
        // 出栈
        System.out.println(stack.poll());
        // 遍历
        for (Integer i : stack) {
            System.out.println(i);
        }
    }

}
代码语言:javascript
复制
3
3
2
1
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-28,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 简介
  • 用法
    • 队列
      • 入队
      • 出队
      • 查看队头元素
    • 代码案例
    • 栈
      • 入栈
      • 出栈
      • 查看栈顶元素
      • 代码案例
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档