Java Stack解析

南笙酒味 提交于 2019-11-28 11:01:33

Stack继承自Vector

虽然Stack的可以由Vector封装实现,且底层数据结构都是数组。但是为什么Stack作为一个基础的数据结构,没有像List、Queue以接口的形式继承自Collection,而是Vector的一个子类,个人认为这个逻辑性不是很合理。

Stack是一个线程安全的类,不仅仅由于它的基类是线程安全的,它的子类方法也都是同步方法。为什么Stack需要是线程安全的?这一点我也不理解

Stack的API:

1.push()
入栈

2.pop()
出栈

3.peek()
返回栈顶元素,不出栈

4.empty()
是否为空
为什么不叫isEmpty()呢?父类已存在该方法。两者只是实现上前者利用了Vector的封装方法size(),后者直接判断元素个数,不理解empty()方法的存在意义。

5.search()
从栈顶元素向下,循环该元素第一次出现的位置

Stack的数据结构、API很容易理解,但是JDK里对Stack的实现却让人很费解,网上的讨论多认为这是早期设计不规范所致

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!