jdk版本:1.8.0_77
参考文档:jdk 1.8 docs
Stack类图
Stack特点
- Stack 栈(last-in-first-out)后进先出,继承自Vector,通过5个方法(push,pop,peek,empty,search)来实现栈特性。
- Stack method:
(1). push向栈顶添加一个元素;
(2). pop从栈顶弹出一个元素;
(3). peek返回栈顶元素;
(4). empty是否存在元素;
(5). search从栈顶开始查找元素计算到顶部距离。
@Test
public void testUsual() {
Stack stack = new Stack();
stack.push("1");
stack.push("2");
stack.push("3");
System.out.println("pop top element:" + stack.pop());
System.out.println("peek top element:" + stack.peek());
System.out.println("check stack empty:" + stack.empty());
System.out.println("search element position:" + stack.search("1"));
}
- 如果需要使用栈最好使用实现自Deque接口的类而不是Stack,Stack继承自Vector可以对指定位置元素做操作不安全;从面向接口编程角度考虑选择Deque是更好的选择。
Dequestack = new ArrayDeque ();
@Test
public void testChoose() {
Stack stack1 = new Stack();
Deque stack2 = new ArrayDeque();
stack1.push("1");
stack2.push("1");
stack1.add(1, "2");//Stack可以在指定位置添加元素
}
- Stack是线程安全的,方法使用synchronized来保证线程之间同步。
public synchronized E pop() {
E obj;
int len = size();
obj = peek();
removeElementAt(len - 1);
return obj;
}
代码