数据结构:栈

先进后出

Posted by MatthewHan on 2020-04-21

介绍

last-in-first-out,后进先出是它最大的特点。class Stack<E> extends Vector<E>作为Vector的子类。

Vector底层使用数组存储数据,所以Stack也是如此。

Stack类自身的一些方法:

方法 方法描述
boolean empty() 测试堆栈是否为空。
Object peek() 查看堆栈顶部的对象,但不从堆栈中移除它。
Object pop() 移除堆栈顶部的对象,并作为此函数的值返回该对象。
Object push(E item) 把项压入堆栈顶部。
int search(Object o) 返回距离栈顶最近的相同元素的距离,返回对象在堆栈中的位置,以 1 为基数。

其中search方法比较特殊,返回的是该元素的位置,但是从1开始的,这个不是数组下标。源码里是这样写的:

1
2
3
4
5
6
7
public synchronized int search(Object o) {
int i = lastIndexOf(o);
if (i >= 0) {
return size() - i;
}
return -1;
}

如果该栈不存在任何元素,使用pop和peek方法会报NPE。

以上方法都是用了synchronized进行修饰,确保线程同步。

父类方法(未完待续…)