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

news/2024/5/8 10:01:09

目录

1.Java封装的栈

2.Java自带的队列

2.1 ArrayDeque

2.2 LinkedList

2.3 PriorityQueue


1.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()

    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()

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使用一模一样,就是初始化队列不同

    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()

        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.mrgr.cn/p/37823407

相关文章

什么是储能电站的一次设备与二次设备?

随着国家政策导向和扶持&#xff0c;储能电站的建设&#xff0c;在各地均稳步推进&#xff0c;储能电站的设备主要分一次设备和二次设备两种&#xff0c;下面分别介绍这两方面内容&#xff1a; 储能电站一次设备 一次设备是储能电站的电路基础设施&#xff0c;包含变压器、主…

基于Python实现的推箱子小游戏

Python贪吃蛇小游戏实现: 推箱子曾经在我们的童年给我们带来了很多乐趣。推箱子这款游戏现在基本上没人玩了&#xff0c;甚至在新一代人的印象中都已毫无记忆了。。。但是&#xff0c;这款游戏可以在一定程度上锻炼自己的编程能力。 运行效果如图所示&#xff1a; 游戏关卡有点…

就业班 第三阶段(nginx) 2401--4.22 day1 nginx1 http+nginx初识+配置+虚拟主机

一、HTTP 介绍 HTTP协议是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写,是用于从万维网&#xff08;WWW:World Wide Web &#xff09;服务器传输超文本到本地浏览器的传送协议。 HTTP是一个基于TCP/IP通信协议来传递数据&#xff08;HTML 文件…

前端开发攻略---用原生JS在网页中也能实现文本转语音

1、原理 语音合成 (也被称作是文本转为语音&#xff0c;英语简写是 tts) 包括接收 app 中需要语音合成的文本&#xff0c;再在设备麦克风播放出来这两个过程。 Web API中对此有一个主要控制接口 SpeechSynthesis&#xff0c;外加一些处理如何表示要被合成的文本 (也被称为 utte…

curl wget 下载文件

curl 下载文件:curl -kO https://10.0.8.5:8888/chfs/shared/Application/360se13.1.6055.0.exe #下载远程服务器上的文件,需要定位到末端文件-k #忽略服务器ssl证书 -O #保存文件至本地,并使用源文件名 -o zhang.exe #使用自定义文件名 zhang.exe…

网络安全数字孪生:一种新颖的汽车软件解决方案

摘要 随着汽车行业转变为数据驱动的业务&#xff0c;软件在车辆的开发和维护中发挥了核心作用。随着软件数量的增加&#xff0c;相应的网络安全风险、责任和监管也随之增加&#xff0c;传统方法变得不再适用于这类任务。相应的结果是整车厂和供应商都在努力应对汽车软件日益增加…

CarrierConfig 加载流程和配置覆盖问题

问题 有的MVNO卡没有配置过 CarrierConfig及相关 overlay,但是实际运行的时候功能被override了 ,此时可能是因为CarrierConfig用了父类(同MCCMNC等情况)的配置,因此在直接查找对应卡cid或mccmnc+mvno属性时候的CarrierConfig是没办法找到影响功能的配置项的。 代码逻辑 …

力扣-LCR 126. 斐波那契数

1.题目 题目地址(LCR 126. 斐波那契数 - 力扣(LeetCode)) https://leetcode.cn/problems/fei-bo-na-qi-shu-lie-lcof/ 题目描述 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) …

qml 下拉框图片的代码,不是ComBox

// 导入 QtQuick 2.2 模块 import QtQuick 2.2// 定义一个 Rectangle 组件&#xff0c;作为下拉菜单的容器 Rectangle {id: dropdown // 下拉菜单的 IDx: 0 // x 坐标y: 0 // y 坐标z: 0 // z 坐标width: 458 // 宽度height: 60 // 高度radius: 8 // 圆角半径color: "tran…

力扣HOT100 - 200. 岛屿数量

解题思路&#xff1a; 岛屿题目一般使用dfs。 1.判断是否越界 2.用0&#xff0c;1&#xff0c;2三个状态标识当前格子的状态&#xff08;三个状态比两个状态更清晰&#xff09; 3.向周围四个方向遍历 class Solution {public int numIslands(char[][] grid) {int cnt 0;fo…

R语言银行信用数据SOM神经网络聚类实现可视化

原文链接:http://tecdat.cn/?p=3231 原文出处:拓端数据部落公众号当今社会,“信用”越来越多的人们关注个人或企业,有望获得最高的信用评分,以享受更多的信贷额度,更优惠的利率。 那么我们如何评分信用,并使我们的客户可视化? 自组织地图( SOM )是一种无监督的数据可…

2024年大数据应用、智能控制与软件工程国际会议(BDAICSE2024)

2024年大数据应用、智能控制与软件工程国际会议(BDAICSE2024) 会议简介 我们诚挚邀请您参加2024年大数据应用、智能控制和软件工程国际会议&#xff08;BDAICSE2024&#xff09;。这次会议将在美丽的长沙市举行。 本次大会旨在汇聚全球大数据应用、智能控制、软件工程等领…

PostgreSql-Install

PostgreSql源码安装 一、源代码下载二、操作系统配置三、编译安装四、启动数据库五、相关命令 PostgreSQL是一个强大的 开源对象关系数据库系统&#xff0c;它使用并扩展了SQL语言&#xff0c;并结合了许多功能&#xff0c;可以安全地存储和扩展最复杂的数据工作负载。 一、源…

第四章:Total Store Order and the x86 Memory Model

chapter4:TSO于X86内存模型 1、为什么需要TSO/x86 处理器内核长期以来使用write buffer来保存已提交的store指令,直到内存系统可以处理这些store请求。当store指令提交时,store请求进入write buffer,而当需要写入的缓存行在内存系统中可以保证缓存一致性时,store请求就退出…

1-内核开发环境ubuntu+virtualbox+mobaXterm搭建

内核开发环境 ubuntuvirtualboxmobaXterm搭建 目录 内核开发环境 ubuntuvirtualboxmobaXterm搭建 1.virtualbox 安装 2.ubuntu 安装 3.网络设置 4.虚拟机安装ssh 服务&#xff0c;更新ubuntu 源安装基本软件 5.mobaXterm 个人免费版本安装 6.总结 本课程教程从0-1开始教…

循环队列的程序接口

循环队列的程序接口 目录循环队列的程序接口队列的说明队列循环队列入队、出队头文件创建队空、队满的判断入队出队验证 队列的说明 队列循环队列入队、出队头文件 /********************************************************************* file name: 循环队列的接口* author…

notepad++ 安装compare文件对比插件失败解决办法

1.首先notepad++ 安装compare方法: 在菜单栏点击“插件”》插件管理 搜索:compare 点击YES 因为国内网络原因,可能会安装失败,也可能安装比较久。 2.自己解压安装:下载解压包: 链接:https://pan.baidu.com/s/1B8hZJCJ8PLZgwdYzQeWGpQ提取码:7n2s点击打开插件目录: 目…

mybatisplus乐观锁(单个任务)

乐观锁:在关系数据库管理系统里,乐观并发控制(又名“乐观锁”,Optimistic Concurrency Control,缩写“OCC”)是一种并发控制的方法。它假设多用户并发的事务在处理时不会彼此互相影响,各事务能够在不产生锁的情况下处理各自影响的那部分数据。在提交数据更新之前,每个事…

dotnet 8 版本与银河麒麟V10和UOS系统的 glib 兼容性

刚刚好 dotnet 8 的 glib 版本足够旧,可以运行本文记录于 2024.04.26 如果你阅读本文时间距离本文记录时间过远,可能本文记录的信息已失效 dotnet 根据 dotnet 的 supported-os 文档记录,当前的 dotnet 8 是 8.0.4 版本,官方说明是支持 Debian 11 及以上版本 实际测试可以在…

dotnet C# 简单的追加文件夹到 ZipArchive 压缩文件的方法

本文将告诉大家一个在 ZipArchive 里追加文件夹,以及添加过滤文件处理的压缩文件辅助方法实现的方法的代码如下/// <summary>/// 追加文件夹到压缩文件里面/// </summary>/// <param name="archive"></param>/// <param name="sour…