一、官方介绍
Stack类表示对象的后进先出(LIFO-In lastly,Out firstly)堆栈。它通过5个操作扩展了Vector类,这5个操作允许将一个Vector视为一个Stack。为基础的push和pop提供了操作,以及一个方法peek来获取Stack顶部,一个方法来测试是否栈是空的,和一个方法来判断某一项和stack的顶部距离。第一次创建Stack时,它不包含任何项。Deque接口及其实现提供了一组更完整、更一致的后进先出Stack操作,应该优先使用这些操作。例如:
Deque
<Integer> stack
= new ArrayDeque<Integer>();
二、源码分析
package java
.util
;
public class Stack<E> extends Vector<E>
{
public Stack()
{}
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;
}
public synchronized int search(Object o
)
{
int i
= lastIndexOf(o
);
if (i
>= 0)
{
return size() - i
;
}
return -1;
}
private static final long serialVersionUID
= 1224463164541339165L
;
}