Stack 的操作|学习笔记

简介: 快速学习 Stack 的操作

开发者学堂课程【Java高级编程Stack 的操作】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/20/detail/422


Stack 的操作

内容简介:

1、Stack类、栈的定义

2、栈的基本操作

3、栈的入栈和出栈的顺序规律

4、栈的逻辑结构

5、具体内容

1、Stack类、栈的定义:

栈是一种先进后出的数据结构。例如文本编辑器上都有的撤销功能,每次使用时,最后一次的编辑操作永远是最早、最先撤销。这个功能就是利用栈来实现,栈的基本操作形式如下:先设置有一个栈的空间,将操作数据输入栈里面,栈在整个过程之中,它分为两个概念,一个叫做栈顶,是栈的头部,一个叫做是栈底,是栈的尾部

基本上当数据对象进行保存的时候,新的数据会直接在栈底保存。

2、栈的基本操作

输入的数据一保存到栈底后再输入数据二数据二将会在数据一的上面依次类推,

所有操作数据,最终结果都在最上保存,而后,如果要进行出栈的操作,出过程中,最后保存的数据最先出去

例如在使用的浏览器时,最后一次操作总是最先回退。

浏览器中所有处理回退的过程,严格来讲都是栈的支持。

图片10.png

3、栈的入栈和出栈的顺序规律

在 Java 程序里面使用 Stack 描述我们栈的操作。

这个类的定义如下:

public class Stack

extends Vector

Stack 是 Vector 的一个子类,但是它使用的并不是 Vector 类之中所提供的方法,而是采用如下的两个方法:

·入栈:public E push(E item);

·出栈:public E pop()

4、栈的逻辑结构

范例:实现栈的操作

操作的代码如下

1 package cn. mldn. demo;

2

3 import java.util.stack;

4

5 public class JavaAPIDemo {

6     public static void main(String[ ] args) throws Exception {

7         Stack all = new Stack();

8         all. push("A") ;

9         all.push("B") ;

10        all.push("C") ;

11        System. out. println(all.pop());

12        System. out . println(all. pop());

13        System. out . println(all. pop());

14        System. out . println(all.pop()); //

无数据、EmptyStackException

15      }

16 }

C

B

A

Exception in thread "main" java . util .EmptyStackException

at java. base/java . util . Stack . peek(Stack . java:102)

at java. base/java . util . Stack.pop(Stack.java:84)

at cn. mldn. demo .JavaAPIDemo . main(JavaAPIDemo. java:14 )

通过此时的操作可以发现,所有数据保存之后,将按照倒序的形式进行弹出,如果栈已经空了,则会抛出空栈异常。

5、具体内容

在开发过程中,这是栈的一个基本使用。

要了解栈的继承结构,先得找到 Vector 类的继承结构,在整个的操作里面,Stack 是一个操作子类,继承自 Vector 这个父类。

图片11.png

虽然栈这个结构,在现在开发中所写的情况比较少,但是栈这个数据结构依然是个重要的结构,是开发之中必不可少的操作。

 

 

相关文章
|
存储 缓存 数据可视化
SourceTree使用教程图文详解
Git分布式版本控制系统是我们日常开发中不可或缺的一部分,能够大大提高我们协同工作的效率。前面的一篇文章如何玩转Git介绍过Git的相关知识。在工作中往往我们需要使用Git的可视化管理工具进行版本控制。目前市面上比较流行的Git可视化管理工具有SourceTree、Github Desktop、TortoiseGit等等,我们公司主要使用的是SourceTree。该篇文章主要结合日常开发工作的对于sourctree的一些常用操作进行讲解和总结,帮助没有使用过的同学进行快速入门,希望能对大家有所帮助!
2016 0
SourceTree使用教程图文详解
|
Java 测试技术 Windows
Jmeter 压测 ws(s)
  上一篇Jmeter压测http(s)介绍了如何使用Jmeter压测常规的web服务接口。本文将继续演示如何使用Jmeter对ws(s)进行压力测试。   有过Socket相关开发经验的人应该都不会陌生,ws协议就是WebSocket协议,而wss对应就是在SSL上运行的WebSocket协议。
2544 0
|
Kubernetes 监控 Java
【JVM故障问题排查心得】「内存诊断系列」Docker容器经常被kill掉,k8s中该节点的pod也被驱赶,怎么分析?
【JVM故障问题排查心得】「内存诊断系列」Docker容器经常被kill掉,k8s中该节点的pod也被驱赶,怎么分析?
996 0
【JVM故障问题排查心得】「内存诊断系列」Docker容器经常被kill掉,k8s中该节点的pod也被驱赶,怎么分析?
|
6月前
|
人工智能 自然语言处理 搜索推荐
AI对话像真人!交交:上海交大推出全球首个口语对话情感大模型,支持多语言与实时音色克隆
上海交通大学推出的交交是全球首个纯学术界自研的口语对话情感大模型,具备多语言交流、方言理解、角色扮演和情感互动等能力,通过创新技术实现端到端语音对话和实时音色克隆。
353 14
AI对话像真人!交交:上海交大推出全球首个口语对话情感大模型,支持多语言与实时音色克隆
|
11月前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的段、区和页
MySQL的InnoDB存储引擎逻辑存储结构与Oracle相似,包括表空间、段、区和页。表空间由段和页组成,段包括数据段、索引段等。区是1MB的连续空间,页是16KB的最小物理存储单位。InnoDB是面向行的存储引擎,每个页最多可存放7992行记录。
216 5
|
12月前
|
Java 数据处理 数据库
Java多线程的理解和应用场景
Java多线程的理解和应用场景
280 1
|
JavaScript 前端开发 API
`toISOString()` 方法将日期对象转换为字符串
`toISOString()` 方法将日期对象转换为字符串
475 1
|
存储 关系型数据库 分布式数据库
|
IDE 开发工具 开发者
isort——Python 代码中的导入语句进行排序和格式化
isort,全称是 "Import Sorting",是一个 Python 工具,用来对 Python 代码中的导入语句进行排序和格式化。它可以帮助我们按照一定的规则对导入的模块进行排序,使得代码更加整洁,易于阅读和维护。
|
SQL 缓存 网络协议
网络信息安全实验 — 网络攻击技术实验(Kali系统,John、lc7、arpspoof、ettercap、SQL注入...)
本人深感网络安全实验有点麻烦,花了一个晚上弄了部分,特此将笔记贡献造福后人,个人能力有限,还会继续更新。。。 汇报题目:**15分钟教你用 Python 写一个 arpspoof**(课件准备ing,如果弄完后续补上) 第一次网络安全实验(密码学)也是我做的,这里先放个自制工具:[Java实现密码学工具,集成了对称加密算法DES,AES,IDEA,公开加密算法RSA,ECC,散列算法MD5,SHA1,CRC32,以及RSA,DSA,ECDSA数字签名验证示例。](https://blog.csdn.net/weixin_43734095/article/details/105303562)
1781 0
网络信息安全实验 — 网络攻击技术实验(Kali系统,John、lc7、arpspoof、ettercap、SQL注入...)