您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > JAVA

java栈容器Stack类

时间:2022-07-30 18:27:17  来源:  作者:虚云幻仙

/**

* Stack类extends Vector 栈容器

* 扩充了五个方法 push() peek() pop() empty() search()

* 栈中的方法遵循后进先出 mAIn方法需要等所有方法执行完弹出后才会弹出 方法的递归每一层都要等下一层结束/弹出才能结束/弹出

* 后进的方法位于栈顶 弹出顺序从栈顶往栈底

*/

public class TestStack {

public static void main(String[] args) {

Stack<String> st1 = new Stack<>();

//实例化栈容器是为了使用Stack的五种方法 使用List引用的话无法调用这些方法 这里需要用Stack引用

st1.push("a");

//向栈容器中添加item 替代Vector的.add

st1.push("b");

//每一个新添加的item都会位于栈顶 1位 栈容器从1开始算位置

System.out.println(st1);

//打印结果仍为[a,b] 但这不符合栈容器的用法

st1.push("c");

//将item推进栈中

System.out.println(st1.search("c")+"结果为1 最后添加的c会位于栈顶 1位");

System.out.println(st1.search("a")+"结果为3 目前有三个item 最早添加的a位于最下侧 3位");

//.search()方法从栈顶往栈底查找返回匹配的第一个元素,无论底下是否有重复元素都只会返回第一个

String pop1 = st1.pop();

System.out.println(pop1);

//.pop()会将栈顶的item弹出 并返回该item c在栈顶 结果为c 弹出后b在栈顶

System.out.println(st1.peek());

//peek偷窥 返回栈顶的item但不删除 结果为b 固定查看栈顶的item

System.out.println(st1.empty());

//.empty()判断栈容器是否为空 替代Vector的.isEmpty()

//利用Stack判断对称性

String str = "..{...[...(...)....]....}....(...).....[....]";

//模拟一段代码的语句,这里用...代替代码的字符,只看三种括号,代码中的括号一定是对称的,有左括号就有右括号

System.out.println(symmetry(str));

//symmetry对称性 这里忽略...判断括号的对称性 括号是成对使用的 并且遵守后进先出

// 这个方法用于判断语句结构的问题 如左括号和右括号数量不一致、语句中途在没有左括号的情况下出现右括号

}

static boolean symmetry(String str){

Stack<String> s = new Stack<>();

for (int i = 0;i<str.length();i++){

//.length()字符串的长度

char c = str.charAt(i);

//返回index位的字符

if (c=='{'){

s.push("}");

}

if (c=='['){

s.push("]");

}

if (c=='('){

s.push(")");

}

//括号一定是先写左括号 每一个左括号都应当对应一个右括号

//当出现左括号 向Stack栈容器中添加一个右括号 当出现右括号 从Stack中pop右括号

if (c=='}'||c==']'||c==')'){

if (!s.empty()) {

String pop = s.pop();

//弹出栈顶的括号 要弹出就要确保容器中有元素 先判定是否为空

if (pop.charAt(0) != c) {

//弹出的字符串为一个右括号 对字符串取0位字符即将字符串括号转化为字符

//如果先出的不是最后入的括号种类 说明符号不对称

return false;

}

// String cTemp = ""+c;也可以将字符c转换为字符串判定

// if(!cTemp.equals(s.pop()))return false;

// 又或者s定义为Stack<Char> 直接比较字符

}else {

//如果s为空说明字符串中缺少左括号 不对称

return false;

}

}

}

// if (!s.empty()){

// //如果字符串遍历完,容器中还有括号没被pop说明字符串左右括号数量不对等

// return false;

// }

// return true;对称返回true

return s.empty();

//判断s是否为空的结果决定了是否对称,为空则对称,不为空则不对称,所以直接返回s.empty()即为对称性的结果

}

}



Tags:   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
凌晨3点北京鬼市,天亮就消失,2大规矩:看货不问价,照货不照人
顾名思义,鬼市开市的时间节点在天明之前,至于起点有的是三更,有的是五更,并无一等。其实鬼市各地都有,只不过北京的鬼市更出名,就连老北京人也觉得这里阴森森的,却又很向往想去探险...【详细内容】
2024-04-19  Search:   点击:(3)  评论:(0)  加入收藏
老美怂了?美国众议院计划给予字节跳动额外180天出售TikTok
据外媒报道,迫使字节跳动剥离TikTok的新众议院法案将包括一项条款,赋予总统允许公司额外180天时间完成出售的自由裁量权。该法案已于3月13日获得众议院投票通过,预计将在周六放...【详细内容】
2024-04-19  Search:   点击:(4)  评论:(0)  加入收藏
Meta AI 全球市场扩张,并上线网页版 meta.ai
IT之家 4 月 19 日消息,Meta 公司近日宣布 Llama 3 大语言模型之外,扩展 Meta AI 服务到美国之外的 13 个国家和地区,还宣布上线专门的聊天网站:meta.ai。Meta 公司在新闻稿中表...【详细内容】
2024-04-19  Search:   点击:(2)  评论:(0)  加入收藏
重磅!Meta推出开源大模型Llama 3,性能直逼GPT-4
每经编辑:杜宇当地时间4月18日,AI 领域迎来重磅消息,Meta正式发布了人们等待已久的开源大模型Llama 3。与此同时,Meta首席执行官扎克伯格宣布:基于最新的Llama 3模型,Meta的AI助手...【详细内容】
2024-04-19  Search:   点击:(4)  评论:(0)  加入收藏
多地将禁止超标车上路,还可以选择骑行电摩,交警告诉你上牌流程
超标电动车由于不符合电动车的安全性能标准,存在着安全隐患,所以在过渡期结束以后,这种车辆将禁止上路行驶,接下来有多地将禁止超标电动车上路。广大车主除了选择电动自行车以外...【详细内容】
2024-04-19  Search:   点击:(3)  评论:(0)  加入收藏
喝完一瓶啤酒,多久才能开车?
首先,需要明确的是,酒驾是极其危险的行为,不仅危及自身安全,还可能威胁到他人生命。根据交通法规,当驾驶人血液中的酒精含量达到或超过20mg/100ml时,即被认定为酒驾,而超过80mg/100...【详细内容】
2024-04-19  Search:   点击:(2)  评论:(0)  加入收藏
古代富人都喜欢“扬州瘦马”,什么是“扬州瘦马”?说出来别不信
扬州的繁荣也催生了一些不道德的商机,其中之一就是“扬州瘦马”。这与其说是一个关于马的故事,不如说是一个关于封建社会对女性的摧残的故事。在中国古代,妇女地位低下,一些父母...【详细内容】
2024-04-19  Search:   点击:(4)  评论:(0)  加入收藏
夫妻一方可查询配偶财产状况,为何多地先后立法?
专家认为,这有助于保障妇女对婚姻财产的知情权。不过近年来实践发现,即便有地方出台类似规定,在现实的执行中仍会遭遇一些阻力,尤其是在查询房产和银行存款方面文|《财经》记者...【详细内容】
2024-04-19  Search:   点击:(3)  评论:(0)  加入收藏
“货币战争”开打?五大央行集体出动!
作者:暴哥来源:暴财经pro(ID:icaijing123)1997年东南亚金融危机重演?亚洲五大央行出手,绝不能让悲剧重来!1美元掀桌子,亚洲货币遭遇一场全面风暴!在《美元开始收割了!》一文中暴哥说过,...【详细内容】
2024-04-19  Search:   点击:(3)  评论:(0)  加入收藏
电影《变形金刚:起源》首支预告片发布:擎天柱、威震天还是好朋友
快科技4月19日消息,日前,1986年之后首部《变形金刚》动画电影《变形金刚:起源》发布首款预告片,影片暂定9月13日北美上映。该片将时间线拨回赛博坦时期,实现了观众一直以来期待的...【详细内容】
2024-04-19  Search:   点击:(2)  评论:(0)  加入收藏
▌简易百科推荐
Java 8 内存管理原理解析及内存故障排查实践
本文介绍Java8虚拟机的内存区域划分、内存垃圾回收工作原理解析、虚拟机内存分配配置,以及各垃圾收集器优缺点及场景应用、实践内存故障场景排查诊断,方便读者面临内存故障时...【详细内容】
2024-03-20  vivo互联网技术    Tags:Java 8   点击:(18)  评论:(0)  加入收藏
如何编写高性能的Java代码
作者 | 波哥审校 | 重楼在当今软件开发领域,编写高性能的Java代码是至关重要的。Java作为一种流行的编程语言,拥有强大的生态系统和丰富的工具链,但是要写出性能优异的Java代码...【详细内容】
2024-03-20    51CTO  Tags:Java代码   点击:(25)  评论:(0)  加入收藏
在Java应用程序中释放峰值性能:配置文件引导优化(PGO)概述
译者 | 李睿审校 | 重楼在Java开发领域,优化应用程序的性能是开发人员的持续追求。配置文件引导优化(Profile-Guided Optimization,PGO)是一种功能强大的技术,能够显著地提高Ja...【详细内容】
2024-03-18    51CTO  Tags:Java   点击:(34)  评论:(0)  加入收藏
Java生产环境下性能监控与调优详解
堆是 JVM 内存中最大的一块内存空间,该内存被所有线程共享,几乎所有对象和数组都被分配到了堆内存中。堆被划分为新生代和老年代,新生代又被进一步划分为 Eden 和 Survivor 区,...【详细内容】
2024-02-04  大雷家吃饭    Tags:Java   点击:(63)  评论:(0)  加入收藏
在项目中如何避免和解决Java内存泄漏问题
在Java中,内存泄漏通常指的是程序中存在一些不再使用的对象或数据结构仍然保持对内存的引用,从而导致这些对象无法被垃圾回收器回收,最终导致内存占用不断增加,进而影响程序的性...【详细内容】
2024-02-01  编程技术汇  今日头条  Tags:Java   点击:(78)  评论:(0)  加入收藏
Java中的缓存技术及其使用场景
Java中的缓存技术是一种优化手段,用于提高应用程序的性能和响应速度。缓存技术通过将计算结果或者经常访问的数据存储在快速访问的存储介质中,以便下次需要时可以更快地获取。...【详细内容】
2024-01-30  编程技术汇    Tags:Java   点击:(78)  评论:(0)  加入收藏
JDK17 与 JDK11 特性差异浅谈
从 JDK11 到 JDK17 ,Java 的发展经历了一系列重要的里程碑。其中最重要的是 JDK17 的发布,这是一个长期支持(LTS)版本,它将获得长期的更新和支持,有助于保持程序的稳定性和可靠性...【详细内容】
2024-01-26  政采云技术  51CTO  Tags:JDK17   点击:(100)  评论:(0)  加入收藏
Java并发编程高阶技术
随着计算机硬件的发展,多核处理器的普及和内存容量的增加,利用多线程实现异步并发成为提升程序性能的重要途径。在Java中,多线程的使用能够更好地发挥硬件资源,提高程序的响应...【详细内容】
2024-01-19  大雷家吃饭    Tags:Java   点击:(111)  评论:(0)  加入收藏
这篇文章彻底让你了解Java与RPA
前段时间更新系统的时候,发现多了一个名为Power Automate的应用,打开了解后发现是一个自动化应用,根据其描述,可以自动执行所有日常任务,说的还是比较夸张,简单用了下,对于office、...【详细内容】
2024-01-17  Java技术指北  微信公众号  Tags:Java   点击:(108)  评论:(0)  加入收藏
Java 在 2023 年仍然流行的 25 个原因
译者 | 刘汪洋审校 | 重楼学习 Java 的过程中,我意识到在 90 年代末 OOP 正值鼎盛时期,Java 作为能够真正实现这些概念的语言显得尤为突出(尽管我此前学过 C++,但相比 Java 影响...【详细内容】
2024-01-10  刘汪洋  51CTO  Tags:Java   点击:(82)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条