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的实现却让人很费解,网上的讨论多认为这是早期设计不规范所致