当前位置: 首页 > news >正文

Java 中的 堆栈(Stack)

在刷算法题中,常用的除了队列(Java 中的 队列(Queue)与双端队列(Deque)-CSDN博客),还有堆栈,这次来学习一下堆栈(Stack)。

堆栈 (Stack)的一个特性即是后进先出 (LIFO),它继承了类 Vector,提供了常用的 push 和 pop 操作,以及一个用于查看堆栈上顶部项的方法、一个用于测试堆栈是否为空的方法,以及一个用于在堆栈中搜索项并发现它与顶部相距多远的方法。

方法如下

// [1, 2, 3, 2]
Stack<Integer> stack = new Stack<>(){{push(1);push(2);push(3);push(2);}};
方法描述示例

E push(E item)

将item加入栈,并返回item

stack.push(4)
// 返回值为 4 

//当前栈为 [1, 2, 3, 2, 4]

synchronized E pop()

删除此堆栈顶部的对象,并将该对象作为此函数的值返回。

如果此堆栈为空,则抛出异常-EmptyStackException

stack.pop()
// 返回值为 4

//当前栈为 [1, 2, 3, 2]

synchronized E peek()

查看此堆栈顶部的对象。

如果此堆栈为空,则抛出异常-EmptyStackException

stack.peek()

// 返回值为 2

//当前栈为 [1, 2, 3, 2]

 boolean empty()

判断此堆栈是否为空,是为true,否为false。

stack.empty()

// 返回值为 false

synchronized int search(Object o)

查询对象 o 所在位置,该位置为返回距最靠近堆栈顶部的匹配项的堆栈顶部的距离;堆栈上最上面的项被视为距离 1。

如果不存在则返回-1

// 当前栈为 [1, 2, 3, 2]

stack.search(2)// 返回值为1

stack.search(3)// 返回值为2

stack.search(1)// 返回值为4

 


http://www.mrgr.cn/news/64728.html

相关文章:

  • 【Vue 全家桶】2、Vue 组件化编程
  • 计算机网络面试题三道之二
  • 从数据提取到管理:TextIn平台的全面解析与产品体验
  • Redis 的使⽤和原理
  • 深度学习(神经网络)中模型的评估与性能度量
  • 性能小钢炮,核显玩3A,最值得买的 8745HS 迷你主机『零刻SER8』,2099的价格是真的香
  • 海滨学院班级记忆档案:设计与技术实现
  • 单例模式四种写法
  • C#/.NET/.NET Core学习路线集合,学习不迷路!
  • 使用贪心策略求解糖果罐调整次数
  • Foods
  • 三层交换实现不同VLAN之间设备的互通
  • js中多let与var
  • 【016C】基于51单片机电子秤(LCD1602显示)
  • SpringBoot框架下:构建专业在线试题库
  • 找不到msvcp120.dll,无法继续执行代码的五种解决方法一步一步指南
  • 数据结构与算法——Java实现 52.力扣98题——验证二叉搜索树
  • spring-boot(thymeleaf前端框架,简单了解)、( 跨域请求)
  • 【LwIP源码学习5】网口接收数据处理过程
  • 数据挖掘(七)
  • 【设计模式系列】总览
  • ‌【元素周期表】氢
  • LeetCode 3226. 使两个整数相等的位更改次数
  • 11.3笔记
  • 图解大模型训练系列:序列并行1,Megatron SP
  • 图像滤波技术详解与实践应用