jdk版本:1.8.0_77
參考文檔:jdk 1.8 docs
Stack類圖
Stack繼承關(guān)系
Stack特點
- Stack 棧(last-in-first-out)后進先出甸昏,繼承自Vector守屉,通過5個方法(push,pop,peek,empty,search)來實現(xiàn)棧特性。
- 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"));
}
- 如果需要使用棧最好使用實現(xiàn)自Deque接口的類而不是Stack奴迅,Stack繼承自Vector可以對指定位置元素做操作不安全;從面向接口編程角度考慮選擇Deque是更好的選擇挺据。
Deque<Integer> stack = new ArrayDeque<Integer>();
@Test
public void testChoose() {
Stack stack1 = new Stack();
Deque<String> 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;
}