说说 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:说说 Java 队列
下一篇:说说 Java List 列表

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月04日 18时58分53秒