说说 Java 堆栈
发布日期:2021-06-29 21:05:21
浏览次数:2
分类:技术文章
本文共 541 字,大约阅读时间需要 1 分钟。
堆栈是“后进先出”(LIFO)集合。因为最后压入栈的元素,会被第一个 弹出栈。
就好像堆叠在一起的盘子,必须把上面的盘子取出,才能取出下面的盘子。强行取出底下的盘子就会造成结构不稳,引起坍塌。
1 基本用法
Java 使用了一个新的类 ArrayDeque 来实现堆栈结构:
输出:
2 Stack 类
为何不推荐使用 Java Stack 类?
因为 Stack 类继承了 Vector 类,也就继承了 Vector 中所有公有方法。而 Vector 作为动态数组,它提供了在数组中任何位置添加或者删除元素的方法。这种设计破坏了栈这种数据结构,因为栈只允许在一端进行操作。
我们可以自定义一个名为 Stack 的类,来替换原生 Stack 类:
3 Vector 类
为何不推荐使用 Java Vector 类?
从Vector 类的源代码中可以看出,大量 API 方法加入 synchronized 标注,在方法级别实现同步操作。虽然这样做可以保证线程安全,但牺牲了性能。因此相对于 ArrayList 来说,效率不高。
还有一个原因是 Vector 对象扩容时,默认是原容量的2倍;而 ArrayList 类扩容是原容量的 1.5 倍,所以 ArrayList 类更节省空间。
转载地址:https://deniro.blog.csdn.net/article/details/108296069 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月04日 18时58分53秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
关于 tflite 更新的 task_api 和 interpreter 两种方式
2019-04-30
2021-06-21 VC++ 6.0安装
2019-04-30
Java方法重载
2019-04-30
可变参数列表与数组作为参数的区别
2019-04-30
关于javadoc命令
2019-04-30
Java内存管理之堆和栈
2019-04-30
就近原则总结
2019-04-30
this关键字的应用
2019-04-30
构造方法常见问题总结
2019-04-30
package和import应用的常见问题
2019-04-30
static关键字的应用
2019-04-30
关于Objecg的常见问题
2019-04-30
关于单例模式的常见问题
2019-04-30
IDEA创建直接创建spring项目失败:下载失败 ‘https://repo1.maven.org/maven2/org/springframework/spring-aop/5.2.
2019-04-30
iOS推送证书过期处理,极光推送
2019-04-30
QT数据类型转换篇
2019-04-30
QT读写文件篇
2019-04-30
QT UDP应用篇
2019-04-30
Laravel 安装笔记 Star.hou
2019-04-30