首页 > 编程语言 >JAVA中实现队列和栈(Deque接口和ArrayDeque类)

JAVA中实现队列和栈(Deque接口和ArrayDeque类)

时间:2024-08-02 15:53:28浏览次数:13  
标签:Deque ArrayDeque JAVA 队列 队头 实现 元素 Stack

用什么来实现队列和栈

首先JAVA中有一个Queue接口,用来实现队列。Deque其实就是双端队列,代表两端都可进可出的队列。ArrayDeque就是用数组来实现这个双端队列。

(Deque由于是接口,只可以用于声明对象,但是没办法实例化,实例化还是要使用ArrayDeque类)

这时可能就会产生疑惑,队列有了,那么栈用什么来实现呢,其实在Java中栈也是用这个Deque来实现,具体实现下面会写,现在先放在一边,思考那么Java中的Stack类不就是栈吗,为什么不使用Stack来作为栈呢?这就是涉及到了一个历史遗留问题,Java中有一个Vector类,而Stack就是集成自这个Stack类,Vector现在已经基本被弃用了,因为vector所有的操作都进行了同步操作以保证线程安全,这在单线程的程序中是非常浪费时间的,所以弃用了。

如何实现

那么具体如何实现呢,因为Deque是双端队列,所以我们从两端都可以进可出。记住下列方法即可。下面论述都把对应空间想象成一个队尾在左,队头在右的队列来进行操作。

用作栈

push():在栈顶插入元素(队头插入)

pop():弹出栈顶元素(队头弹出)

peek():返回栈顶元素(返回队头)

isEmpty():判断是否尾空

用作队列

add():在队尾插入元素(offer()也可以,有细微区别)

poll():从队头弹出元素(pop()逻辑上也可以)

peek():访问队头元素

isEmpty():判断是否为空

标签:Deque,ArrayDeque,JAVA,队列,队头,实现,元素,Stack
From: https://blog.csdn.net/qq_52983535/article/details/140870703

相关文章

  • Java SE核心技术——8继承
    继承是面向对象的三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法。继承是指在原有类的基础上,进行功能扩展,创建新的类型。继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。JAVA中类只有单继承,没有多继承!继承是类和类之间的......
  • Java SE核心技术——6类与对象
    面向对象编程(Object-OrientedProgramming,简称OOP)和面向过程编程(Procedure-OrientedProgramming)是两种不同的编程范式,它们在设计和实现软件时采用了不同的方法和哲学。一、面向对象编程核心概念:面向对象编程的核心是"对象",对象可以包含数据(属性)和代码(方法)。万物皆对象。封......
  • Java SE核心技术——7封装
    封装的概述对外部隐藏内部细节1、封装的目的是隐藏对象的内部状态和实现细节,只暴露出一个可以被外界访问和操作的接口。通过将类的属性设置为私有(private),防止外部直接访问和修改这些属性。2、好处:高内聚低耦合(面向对象设计的最高原则)(1)隐藏事物的实现细节降低使用难度(2)提高了......
  • java的数据类型之基本类型
    强类型语言要求变量的使用要严格符合规定,所有变量都必须先定义后使用。如果没有按照指定要求使用变量,则该变量将报错。java就是强类型语言。java的两大数据类型1.基本类型2.引用类型其中基本类型分为八小种按照图示内容了解各个类型的字节范围(若超过该范围,则IDEA会报错)1......
  • 基于SpringBoot的智能购房推荐系统-09040(免费领源码)可做计算机毕业设计JAVA、PHP、爬
    Springboot智能购房推荐系统摘 要近年来随着我国经济的高速发展,房地产业也随之蓬勃发展,尤其是最近国家新出台的房改政策。鼓励居民购房,这对房产公司无疑是一个极好的发展势头。尤为重要的是,近几年随着信息技术和电子商务的快速发展,许多企业都开发了自己房产信息软件。智......
  • java之WIFI信号模块
    开发步骤分为以下几点:1.在AndroidManifest中声明相关权限(网络和文件读写权限)声明权限:<uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/><uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"/><uses-permissiona......
  • 在cmd/powershell中使用java/javac -cp/--class-path命令链接多个jar包
    ​ 之前使用ide,习惯了傻瓜式一键运行java文件,对于java虚拟机以及java指令了解的很少,最近重温java,在使用windows中的cmd来运行java项目时,遇到了一点问题,相同的指令在cmd中能够运行,在powershell中不能正确运行,在国内网站上搜索无果后,果断去国外,在stackoverflow上找到解决办法。​ ......
  • Java计算机毕业设计网络相册平台(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和智能设备的普及,人们拍摄和分享照片的方式发生了翻天覆地的变化。传统的实体相册逐渐被数字相册所取代,而网络相册平台作为......
  • Java计算机毕业设计基于Android的自闭症康复训练APP设计与实现(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景自闭症,作为一种复杂的神经发育障碍,影响着全球数百万儿童及其家庭。自闭症患者在社交互动、沟通表达及行为模式上常表现出显著困难。随着移动技术的飞......
  • Java计算机毕业设计企业固定资产管理系统(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着企业规模的扩大与业务的复杂化,固定资产作为企业运营的重要物质基础,其数量与价值日益增长,管理难度也随之加大。传统的手工或简单电子表格管理方式......