这是栈的一个默认实现 栈的结构是先进后出
public class Stack<E> extends Vector<E>
这是Stack类的描述 继承自Vector类 Vector类和ArrayList高度相似 只是每个方法增加了synchronized关键字 这个Vector我就不讲解了
public Stack() {
}
无参构造方法
public E push(E item) {
addElement(item);
return item;
}
push方法 调用vector类的addElement方法 返回插入的元素
public synchronized E pop() {
E obj;
int len = size();
obj = peek();
removeElementAt(len - 1);
return obj;
}
这个是pop方法 将Vector中的最后一个元素 也就是栈顶的元素删除
调用peek方法获取栈顶元素 然后删掉这个元素 最后返回这个元素
public synchronized E peek() {
int len = size();
if (len == 0)
throw new EmptyStackException();
return elementAt(len - 1);
}
这个是peek方法就是获取栈顶元素的方法 是加了锁的
先判断Vector里的对象数组是否为空 如果为空就抛出异常
最后返回栈顶元素
public boolean empty() {
return size() == 0;
}
判断栈是否为空的方法 就是判断数组有没有元素
public synchronized int search(Object o) {
int i = lastIndexOf(o);
if (i >= 0) {
return size() - i;
}
return -1;
}
这个是搜索方法
先调用lastIndexOf方法返回参数对象在数组中的下标 判断如果这个返回值大于等于0 就用size减去这个下标 栈的位置和数组的位置正好相反 否则返回-1
Stack讲解完毕