Java 棧(Stack) 類
阿新 • • 發佈:2021-02-12
棧
一、什麼是棧?
棧是向量(Vector)的一個子類,它實現了一個標準的後進先出的棧。
堆疊只定義了預設建構函式,用來建立一個空棧。 堆疊除了包括由Vector定義的所有方法,也定義了自己的一些方法。
Stack()
除了由Vector定義的所有方法,自己也定義了一些方法:
序號 | 方法 | 描述 |
---|---|---|
1 | boolean empty() | 測試堆疊是否為空。 |
2 | Object peek( ) | 檢視堆疊頂部的物件,但不從堆疊中移除它。 |
3 | Object pop( ) | 移除堆疊頂部的物件,並作為此函式的值返回該物件。 |
4 | Object push(Object element) | 把項壓入堆疊頂部。 |
5 | int search(Object element) | 返回物件在堆疊中的位置,以 1 為基數。 |
程式碼例項:
此處程式碼出處:https://blog.csdn.net/qauchangqingwei/article/details/80810931
import java.util.EmptyStackException;
import java.util.Stack;
public class StackTest {
public static void main(String[] args) {
stackMethod();
}
//stack operate
public static void stackMethod(){
//定義一個Integer泛型的Stack
Stack<Integer> stack = new Stack<Integer>();
//此處將1到2壓入棧中
stack.push(1);
stack.push(2);
System.out.println("新建棧stack是否為空 : "+(stack.empty() ? "空" : stack.size()));
//push : 把項壓入堆疊頂部,返回值泛型指定的型別
//此處將3到5壓入棧中
stack.push(3);
stack.push(4);
stack.push(5);
System.out.println("將1到5按順序壓入棧中後為:"+stack);
//empty : 測試堆疊是否為空,size() == 0,返回值boolean
System.out.println("值為1~5的棧中stack是否為空 : "+(stack.empty() ? "空" : stack.size()));
//search : 返回物件在堆疊中的位置,以 1 為基數,引數:search(Object o) ,返回值int
int oStack = stack.search(1);
System.out.println("查詢棧stack中物件3的位置elementId為 : "+oStack);
//peek : 檢視堆疊頂部的物件,但不從堆疊中移除它,返回值泛型指定的型別
int topElement =stack.peek();
System.out.println("檢視stack的棧頂元素為 : "+topElement);
System.out.println("peek操作stack後為 : "+stack);
//pop : 移除堆疊頂部的物件,並作為此函式的值返回該物件,返回值泛型指定的型別
int oRemove = stack.pop();
System.out.println("移除stack棧頂的元素為 : "+oRemove);
System.out.println("pop操作移除stack棧頂元素後為 : "+stack);
}
}
輸出結果:
新建棧stack是否為空 : 2
將1到5按順序壓入棧中後為:[1, 2, 3, 4, 5]
值為1~5的棧中stack是否為空 : 5
查詢棧stack中物件3的位置elementId為 : 5
檢視stack的棧頂元素為 : 5
peek操作stack後為 : [1, 2, 3, 4, 5]
移除stack棧頂的元素為 : 5
pop操作移除stack棧頂元素後為 : [1, 2, 3, 4]