Java自带的栈和队列(使用巨方便)

ops/2024/9/25 4:33:18/

目录

1.Java封装的栈

2.Java自带的队列

2.1 ArrayDeque

2.2 LinkedList

2.3 PriorityQueue


1.Java封装的栈

栈——“后进先出”原则

java">Stack<T> stack = new Stack();/**栈顶添加元素*/
stack.push(T);/**栈顶弹出元素*/
T temp = stack.pop();/**查看当前栈顶元素,元素不出栈*/
T temp = stack.peek();

2.Java自带的队列

队列——“先进先出”原则

定义:

        是指Java集合框架中的Queue接口及其实现类。

Queue接口继承自Collection接口,表示一种先进先出(FIFO)的数据结构,常用于实现队列的功能。

Java中常用的队列实现类包括:

  1. ArrayDeque:基于数组实现的双端队列,既可以作为队列使用,也可以作为栈使用。
  2. LinkedList:基于链表实现的双向队列,也可以作为队列使用。
  3. PriorityQueue:基于堆实现的优先队列,元素按照优先级顺序排序。

Java的队列实现类

1、都实现Queue接口,使用方法一致

2、都是线程安全的,可以在多线程环境下使用。

2.1 ArrayDeque

当作栈使用

入栈(只能从栈顶进)

1、push()

出栈

(从栈顶出,注意这里First表示栈顶)

1、pop()

2、poll()

3、pollFirst()

(Last是栈底)

3、pollLast()

查看

(栈顶)

1、peek()

2、peekFirst()

 (栈底)

3、peekLast()

java">    ArrayDeque<Integer> arrayDeque = new ArrayDeque<>();
/**入栈*/arrayDeque.push(1);arrayDeque.push(9);
/**弹出栈顶元素*/System.err.println(arrayDeque.pop());//打印9
/**查看现在栈顶元素*/System.err.println(arrayDeque.peek());//打印1

当作队列使用方法

入队

(加入队头)

1、offer(T) 

2、offerFirst(T)

   (加入队尾)

3、offerLast(T)

出队

     (队头出)

1、pop()

2、poll()

3、pollFirst()

      (队尾出)

3、pollLast()

查看元素,不弹出

     (队头)

1、peek()

2、peekFirst()

        (队尾)

3、peekLast()

java">import java.util.ArrayDeque; ArrayDeque<Integer> deque = new ArrayDeque<>();/**加入元素*/deque.offer(1);deque.offer(4);deque.offer(3); // 队列元素为  1 4 3/**队头加入元素 */deque.offerFirst(5);// 队列元素 5 1 4 3/**队尾加入元素 */deque.offerLast(7);// 队列元素 5 1 4 3 7/**查看对头元素 */System.err.println(deque.getFirst());//5System.err.println(deque.peekFirst());//5/**查看队尾元素 */System.err.println(deque.getLast());//7/**弹出队头元素 */System.err.println(deque.poll());//5System.err.println(deque.pollFirst());//1/**查看当前队头元素(不弹出) */System.err.println(deque.peek());System.err.println(deque.peekFirst());}

2.2 LinkedList

作栈和队列使用同ArrayDeque一致

区别:存储方式不一致,LinkedList是链式存储

方法概述 其实跟ArrayDeque使用一模一样,就是初始化队列不同

java">    LinkedList<Integer> deque = new LinkedList<>();deque.offer(1);deque.offer(4);deque.offer(3); // 队列元素为  1 4 3/**队头加入元素 */deque.offerFirst(5);// 队列元素 5 1 4 3/**队尾加入元素 */deque.offerLast(7);// 队列元素 5 1 4 3 7/**查看对头元素 */System.err.println(deque.getFirst());//5System.err.println(deque.peekFirst());//5/**查看队尾元素 */System.err.println(deque.getLast());//7/**弹出队头元素 */System.err.println(deque.poll());//5System.err.println(deque.pollFirst());//4/**查看当前队头元素(不弹出) */System.err.println(deque.peek());System.err.println(deque.peekFirst());}

2.3 PriorityQueue

只能作为队列,而且相比LinkedList,PriorityQueue加入元素会自动按顺序重组

入队只有队尾加元素 offer()

出队只有对头出元素 poll()

只能查看队头元素 peek()

java">        PriorityQueue<Integer> queue = new PriorityQueue<>();// 入队queue.offer(3);queue.offer(1);queue.offer(2);// 出队System.out.println(queue.poll()); // 输出:1// 查看队首元素System.out.println(queue.peek()); // 输出:2


http://www.ppmy.cn/ops/17383.html

相关文章

算法矩阵提速原理

不管是图形还是AI&#xff0c;如果看过相关的算法&#xff0c;都会注意到矩阵运算&#xff0c;很多讲算法的教程都会说将for转换成矩阵&#xff0c;可以极大的增加效率。 但是这不是为难我们这些数学低能儿吗&#xff1f;矩阵运算这些高级货算是高级数学了&#xff0c;比CURD还…

php中常见的函数和使用方法

PHP 是一种广泛使用的服务器端脚本语言,它提供了许多内置函数来执行各种任务。以下是一些在 PHP 中常见的函数及其使用方法: echo 和 print:用于输出内容到浏览器。echo "Hello, World!"; print "Hello again!";var_dump():用于打印变量的详细信息,包…

03-JAVA设计模式-策略模式

策略模式 什么是策略模式 策略模式&#xff08;Strategy Pattern&#xff09;是行为设计模式之一&#xff0c;它使你能在运行时改变对象的行为。在策略模式中&#xff0c;一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。 在策略模式中&#xff0c;…

vtk.vtkProcrustesAlignmentFilter()使用方法

vtk.vtkProcrustesAlignmentFilter 是 VTK 库中的一个过滤器用于根据最优刚体变换对一组数据进行尺度、平移和/或旋转对齐。 以下是 cudaMemcpy 函数的一些主要方法和属性&#xff1a; GetTransformedPoints() - 返回已经对齐后的点集合。GetMatrixTransform() - 返回计算位移…

javaScript数组-(进阶算法)-计算滑动窗口最大值

滑动窗口 给定数组中的连续子数组&#xff0c;使其和达到最大值&#xff0c;并记录该子数组的起始和结束索引。最后&#xff0c;将最大和及其起始和结束索引存储在数组当中。 const arr [-1,-2,3,9,-4,8];let max null; let sum null;let i0,j0;let length arr.length;if…

python_django中小学家校互动系统vue_flask家校联系

实现了一个完整的家校互动系统&#xff0c;其中主要有作业信息模块、学校管理员模块、学生学籍模块、学生成绩模块、学科模块、系统新闻模块、系统公告模块、校内新闻模块、校内公告模块、用户表模块、token表模块、关于我们模块、收藏表模块、年级模块、家长模块、教师模块、互…

【AMBA Bus ACE 总线 7 -- ACE Domains 介绍】

文章目录 什么是domain?ACE Domains 小结什么是domain? 按照字面的理解,它是一组master的组合。 那么为什么要强调 domain呢? 因为在一个很大的系统中,shareable read 或者 shareable write 都需要一个coherency,比如CCI coherency总线会把请求发给不同的master,但是究…

ExcelVBA把当前工作表导出为PDF文档

我们先问问Kimi Excel导出为PDF的方法有多种&#xff0c;以下是一些常见的方法&#xff1a; 1 使用Excel软件的内置功能&#xff1a; 打开Excel文件&#xff0c;点击“文件”菜单。 选择“另存为”&#xff0c;在“保存类型”中选择“PDF”。 设置保存路径和文件名&#xff…