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

目录

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.mzph.cn/news/829004.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FFmpeg常用结构体、关键函数、ffplay.c分析

一、常用结构体&#xff1a; 1、AVFormatContext结构体&#xff1a; AVFormatContext是一个贯穿全局的数据结构&#xff0c;很多函数都要用它作为参数。FFmpeg代码中对这个数据结构的注释是format I/O context&#xff0c;此结构包含了一个视频流的格式内容。其中存有AVIputFor…

抖音小店值得做吗?前期需要多少资金的投入?

大家好&#xff0c;我是电商糖果 这两天有位想做店的朋友&#xff0c;问了糖果一个问题。 他说开个体店是不是需要办理个体户营业执照。 我回答是的。 他又问办执照是不是需要花钱。 我说自己去工商局办理是免费的&#xff0c;找人代办市场上的价格一般在二百左右。 对方…

最大层内元素和

题目链接 最大层内元素和 题目描述 注意点 返回层内元素之和 最大 的那几层&#xff08;可能只有一层&#xff09;的层号&#xff0c;并返回其中 最小 的那个树中的节点数在 [1, 10000]范围内-10^5 < Node.val < 10^5 解答思路 广度优先遍历树&#xff0c;使用队列存…

本地部署和运行大型语言模型(Large Language Models, LLMs)的工具Ollama

文章目录 本地部署和运行大型语言模型&#xff08;Large Language Models, LLMs&#xff09;的工具Ollama背景什么是Ollama主要功能优势 使用场景Ollama LangChain 实现本地运行Llama 3 本地部署和运行大型语言模型&#xff08;Large Language Models, LLMs&#xff09;的工具…

应用内竞价(Bidding)技术为什么一定要结合瀑布流广告分层+混合智能排序技术?

应用内竞价&#xff08;In-App Bidding或Header Bidding&#xff09;即在APP端实现竞价的优势显而易见&#xff0c;接入的所有广告平台按价格实时排序&#xff0c;价高者得&#xff0c;这样使得每次广告请求收益都是最大值&#xff0c;从而实现收益最大化。 竞价机制是买卖双方…

改善员工绩效管理的 8 种最佳方法

企业如何改进绩效管理体系&#xff0c;才能获得最好的结果&#xff1f;请仔细阅读&#xff0c;找出答案… 人力资源部门对组织的成功起着至关重要的作用&#xff0c;组织的员工也是如此。更好的组织管理会带来更高的利润。人力资源部门的工作很大一部分就是规范绩效管理体系&a…

19-Echarts 配置系列之: timeline 动态切换

前言&#xff1a; timeline 动态切换 作用&#xff1a;在同一个图表上展示不同时间段的数据&#xff0c;并实现动态切换的效果。 简介原理&#xff1a;在 timeline 中定义显示节点并与相应的数据结构绑定&#xff0c;然后调用 ECharts 提供的方法&#xff0c;重新渲染图表。 …

基于51单片机的天然气检测报警设计

基于51单片机的天然气检测报警 &#xff08;仿真&#xff0b;程序原理图&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1.MQ-5检测煤气浓度&#xff1b; 2.浓度分为低、中、高三档&#xff0c;分别用LED灯绿、黄、红来提示&#xff1b; 3.当浓度到达中档…

SpringCloud简介

微服务架构理论 微服务架构概述 Spring Cloud简介Spring Cloud 技术栈SpringBoot和SpringCloud的关系SpringCloud和Dubbo区别对比相关文档 微服务架构概述 微服务是一种架构模式&#xff0c;将单一应用程序划分成一组小的服务&#xff0c;服务之间相互协调、相互配合&#xff0…

go实现时间滑动窗口的组件

在 Go 语言中&#xff0c;实现一个时间滑动窗口的组件通常涉及到使用队列来存储事件&#xff0c;并在窗口滑动时移除过期的事件。以下是一个简单的时间滑动窗口组件的实现&#xff0c;它使用一个环形缓冲区&#xff08;ring buffer&#xff09;来存储最近的 N 个事件&#xff0…

chrome浏览器安装elasticsearch的head可视化插件

head插件简介 elasticsearch-head被称为是弹性搜索集群的web前端&#xff0c;head插件主要是用来和elastic Cluster交互的Web前端 head插件历史 elasticsearch-head插件在0.x-2.x版本的时候是集成在elasticsearch内的&#xff0c;由elasticsearch的bin/elasticsearch-plugin…

webpackd打包两次-生成两份代码-出现legacy的js文件

当我们build后dist文件中出现legacy的js文件。 原因&#xff1a; pack.json文件&#xff1b; { *****"browserslist": ["> 0.03%","not dead"] }当我们项目运行在古老的浏览器上面时&#xff08;表示支持市场份额超过 > 0.03% 的浏览器版…

nginx+keepalived 高可用项目实战

1. 概念 keepalived是什么 keepalived是集群管理中保证集群高可用的一个服务软件&#xff0c;用来防止单点故障。 keepalived工作原理 keepalived是以VRRP协议为实现基础的&#xff0c;VRRP全称Virtual Router Redundancy Protocol&#xff0c;即虚拟路由冗余协议。 …

java 中使用 锁的含义、使用方式场景及锁之间的区别与联系,缺点与优点

学习目标&#xff1a; 目标 了解 java 中使用 锁 的含义、使用方式场景及锁之间的区别与联系&#xff0c;缺点与优点。 学习内容&#xff1a; 内容 在 Java 中&#xff0c;锁是一种并发编程中控制多个线程对共享资源访问的机制。 锁的主要作用&#xff1a; 确保在同一时刻只…

序列化及方式对比分析

什么是序列化和反序列化? 如果需要持久化Java对象比如将Java对象保存在文件中, 或在网络传输Java对象, 这些场景需要使用到序列化. 序列化 将数据结构或对象转化成二进制字节流的过程 反序列化 将在序列化过程中所产生的二进制字节流转换成数据结构或者对象的过程 目的 …

PPSSPPSDL for Mac v1.17.1 PSP游戏模拟器(附500款游戏) 激活版

PPSSPPSDL for Mac是一款模拟器软件&#xff0c;它允许用户在Mac上运行PSP&#xff08;PlayStation Portable&#xff09;游戏。通过这款模拟器&#xff0c;用户可以体验到高清甚至更高的分辨率的游戏画面&#xff0c;同时还能够升级纹理以提升清晰度&#xff0c;并启用后处理着…

1.mysql--常用sql(2)

20、条件查询 (1)条件表达式&#xff1a;< &#xff0c; > &#xff0c;&#xff0c; !&#xff0c;<> (2)逻辑运算符:&& &#xff0c;||&#xff0c; ! &#xff0c; and &#xff0c;or&#xff0c; not (3)模糊查询&#xff1a;like between and,in,…

vite和webpacke的常规配置

文章目录 1、vite和webpacke的区分2、vite的常规配置介绍主要部分介绍vite基本配置示例 3、webpacke的常规配置介绍主要部分介绍Webpack 基本配置示例 1、vite和webpacke的区分 相同点&#xff1a; 都是构建工具&#xff0c;用于资源打包 &#xff1b; 都有应用到摇树原理 tre…

[Diffusion Model 笔记]DDIM 笔记 数学推导 Denoising Diffusion Implicit Models

目录 核心总结符号定义第一套&#xff0c;快速简单讲清采样方法继续分析&#xff0c;待定系数法求解图示理解关于参数sigma 本文是观看以下视频的笔记&#xff0c;强烈推荐观看最后的图示理解&#xff1a; https://www.bilibili.com/video/BV13P411J7dm/?spm_id_from333.788 论…

sqlserver创建login、user并授予相应数据库的权限

create login login1 with password111111 --创建一个login&#xff0c;用于登录 go use [BookDB] --在数据库[BookDB]上创建用户user1&#xff0c;拥有下面三个权限 go create user user1 for login login1 with default_schemadbo go exec sp_addrolemember db_ddladmin,…