1.Stack
publicclass Stack extends Vector
- 后进先出(LIFO)的对象堆栈。
- 通过五个操作对类 Vector 进行了扩展 ,允许将向量视为堆栈。
- 首次创建堆栈时,它不包含项。
- Deque 接口及其实现提供了 LIFO 堆栈操作的更完整和更一致的 set,应该优先使用此 set,而非此类。例如: Deque stack = new ArrayDeque();
- Vector的增强类,堆栈顶部对应向量末尾。
构造方法
public Stack() { }
boolean empty():测试堆栈是否为空。
public boolean empty() {
return size() == 0;
}
peek() :查看堆栈顶部的对象,但不从堆栈中移除它。
public synchronized E peek() {
//获取向量容量大小
int len = size();
if (len == 0)
throw new EmptyStackException();
return elementAt(len - 1);//调用父类Vector的elementAt方法
}
注意堆栈顶部的对象的对象索引对应的是向量末尾。
Epop(): 移除堆栈顶部的对象,并作为此函数的值返回该对象。
public synchronized E pop() {
E obj;
//获取向量大小
int len = size();
//获取堆栈顶部的对象
obj = peek();
//调用父类Vector的removeElementAt方法,移除末尾元素
removeElementAt(len - 1);
return obj;
}
Epush(E item):把项压入堆栈顶部。
public E push(E item) {
//调用父类Vector的addElement方法,添加元素至向量末尾
addElement(item);
return item;
}
int search(Object o):返回对象在堆栈中的位置,以 1 为基数。
public synchronized int search(Object o) {
//调用父类Vector的lastIndexOf方法
//返回此向量中最后一次出现的指定元素的索引,从末尾向前搜索,如果未找到该元素,则返回 -1。
int i = lastIndexOf(o);
if (i >= 0) {
return size() - i;
}
return -1;
}