開發者學堂課程【Java進階程式設計:Stack 的操作】學習筆記,與課程緊密聯系,讓使用者快速學習知識。
課程位址:
https://developer.aliyun.com/learning/course/20/detail/422Stack 的操作
内容簡介:
1、Stack類、棧的定義
2、棧的基本操作
3、棧的入棧和出棧的順序規律
4、棧的邏輯結構
5、具體内容
1、Stack類、棧的定義:
棧是一種先進後出的資料結構。例如文本編輯器上都有的撤銷功能,每次使用時,最後一次的編輯操作永遠是最早、最先撤銷。這個功能就是利用棧來實作,棧的基本操作形式如下:先設定有一個棧的空間,将操作資料輸入棧裡面,棧在整個過程之中,它分為兩個概念,一個叫做棧頂,是棧的頭部,一個叫做是棧底,是棧的尾部。
基本上當資料對象進行儲存的時候,新的資料會直接在棧底儲存。
輸入的資料一儲存到棧底後再輸入資料二,資料二将會在資料一的上面,依次類推,
所有的操作資料,最終結果都是在最上儲存,而後,如果要進行出棧的操作,出棧過程中,最後儲存的資料最先出去。
例如在使用的浏覽器時,最後一次操作總是最先回退。
浏覽器中所有處理回退的過程,嚴格來講都是棧的支援。
在 Java 程式裡面使用 Stack 描述我們棧的操作。
這個類的定義如下:
public class Stack
extends Vector
Stack 是 Vector 的一個子類,但是它使用的并不是 Vector 類之中所提供的方法,而是采用如下的兩個方法:
·入棧:
public E push(E item);
·出棧:
public E pop()
範例:實作棧的操作
操作的代碼如下
1 package cn. mldn. demo;
2
3 import java.util.stack;
4
5 public class JavaAPIDemo {
6 public static void main(String[ ] args) throws Exception {
7 Stack all = new Stack();
8 all. push("A") ;
9 all.push("B") ;
10 all.push("C") ;
11 System. out. println(all.pop());
12 System. out . println(all. pop());
13 System. out . println(all. pop());
14 System. out . println(all.pop()); //
無資料、EmptyStackException
15 }
16 }
C
B
A
Exception in thread "main" java . util .EmptyStackException
at java. base/java . util . Stack . peek(Stack . java:102)
at java. base/java . util . Stack.pop(Stack.java:84)
at cn. mldn. demo .JavaAPIDemo . main(JavaAPIDemo. java:14 )
通過此時的操作可以發現,所有資料儲存之後,将按照倒序的形式進行彈出,如果棧已經空了,則會抛出空棧異常。
在開發過程中,這是棧的一個基本使用。
要了解棧的繼承結構,先得找到 Vector 類的繼承結構,在整個的操作裡面,Stack 是一個操作子類,繼承自 Vector 這個父類。
雖然棧這個結構,在現在開發中所寫的情況比較少,但是棧這個資料結構依然是個重要的結構,是開發之中必不可少的操作。