目录
前言
正文
类的api描述
方法
前言
根据前面的ArrayList发现,Vector下面还有一个Stack,这个原来的时候我完全没有注意,这个次让我们一起来揭开这个类的神秘面纱。
正文
类的api描述
-
public class Stack
extends VectorVector
Stack类代表一个方法暗含(LIFO)堆栈的对象。扩展类 Vector 5操作,允许一个向量被视为一个堆栈。通常 push pop操作提供,以及方法 peek在项堆栈顶部,一个方法来测试是否 empty堆栈,和一个项目的方法 search堆栈和发现从顶部有多远。 当堆栈是第一次创建时,它不包含任何物品。
更完整和一致的后进先出栈操作由Deque提供接口及其实现,应该优先使用这个类。例如 Deque stack = new ArrayDeque()
-
public class Stack
Stack类代表一个方法暗含(LIFO)堆栈的对象。扩展类 Vector 5操作,允许一个向量被视为一个堆栈。通常 push pop操作提供,以及方法 peek在项堆栈顶部,一个方法来测试是否 empty堆栈,和一个项目的方法 search堆栈和发现从顶部有多远。extends VectorVector 当堆栈是第一次创建时,它不包含任何物品。
更完整和一致的后进先出栈操作由Deque提供接口及其实现,应该优先使用这个类。例如 Deque
stack = new ArrayDeque ()
看到这里我有了自己的猜测。Stack是继承之Vector来实现的线程安全的堆栈
构造方法
//创建一个空的stack
public Stack() {
}
//他调用了Vector的默认构造方法, 生成了默认容量为10,增量是0的数组,具体请回顾上一章
public Vector() {
this(10);
}
方法
//添加元素,调用addElement, 栈顶添加
public E push(E item) {
addElement(item);
return item;
}
//删除这个堆栈的顶部的对象,并返回该对象的值函数。
public synchronized E pop() {
E obj;
int len = size();
obj = peek();
removeElementAt(len - 1);
return obj;
}
//获取这个堆栈的顶部的对象,没有从堆栈中删除它。
public synchronized E peek() {
int len = size();
if (len == 0)
throw new EmptyStackException();
return elementAt(len - 1);
}
//判断堆栈是否为空
public boolean empty() {
return size() == 0;
}
//Vector类,返回数组中存在元素的数量
public synchronized int size() {
return elementCount;
}
//根据当前对象,从栈顶位置往下的第一个元素的位置
public synchronized int search(Object o) {
//因为栈顶为数组的尾部,所以使用lastIndexOf, 来找数组当前对象最后的下标
int i = lastIndexOf(o);
if (i >= 0) {
return size() - i;
}
return -1;
}
上一章



