在本教程中,我們將借助示例學(xué)習(xí)Java Stack類及其方法。
Java集合框架具有一個(gè)名為Stack的類,該類提供堆棧數(shù)據(jù)結(jié)構(gòu)的功能。
本Stack類繼承Vector類。
在堆棧中,元素以后進(jìn)先出的方式存儲(chǔ)和訪問。也就是說,元素被添加到堆棧的頂部并從堆棧的頂部移除。
為了創(chuàng)建堆棧,我們必須先導(dǎo)入java.util.Stack包。導(dǎo)入包后,就可以使用Java創(chuàng)建堆棧。
Stack<Type> stacks = new Stack<>();
在此,Type指示堆棧的類型。例如,
//創(chuàng)建整數(shù)類型堆棧 Stack<Integer> stacks = new Stack<>(); //創(chuàng)建字符串類型堆棧 Stack<String> stacks = new Stack<>();
由于Stack繼承了Vector類,因此它繼承了所有方法Vector。要了解不同的Vector方法,請?jiān)L問Java Vector Class。
除了這些方法之外,Stack類還包括5個(gè)與Vector區(qū)別開來的方法。
要將元素添加到堆棧的頂部,我們使用push()方法。例如,
import java.util.Stack; class Main { public static void main(String[] args) { Stack<String> animals= new Stack<>(); //將元素添加到Stack animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Stack: " + animals); } }
輸出結(jié)果
Stack: [Dog, Horse, Cat]
要從堆棧頂部刪除元素,我們使用pop()方法。例如,
import java.util.Stack; class Main { public static void main(String[] args) { Stack<String> animals= new Stack<>(); //將元素添加到 Stack animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("初始堆棧: " + animals); //刪除堆棧元素,后進(jìn)先出 String element = animals.pop(); System.out.println("刪除元素: " + element); } }
輸出結(jié)果
初始堆棧: [Dog, Horse, Cat] 刪除元素: Cat
該peek()方法從堆棧頂部返回一個(gè)對(duì)象。例如,
import java.util.Stack; class Main { public static void main(String[] args) { Stack<String> animals= new Stack<>(); //將元素添加到Stack animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Stack: " + animals); //從頂部訪問元素,后進(jìn)先出的原則 String element = animals.peek(); System.out.println("頂部元素: " + element); } }
輸出結(jié)果
Stack: [Dog, Horse, Cat] 頂部元素: Cat
要搜索堆棧中的元素,我們使用search()方法。它從堆棧的頂部返回元素的位置。例如,
import java.util.Stack; class Main { public static void main(String[] args) { Stack<String> animals= new Stack<>(); //將元素添加到Stack animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Stack: " + animals); //搜索元素 int position = animals.search("Horse"); System.out.println("元素Horse的位置: " + position); } }
輸出結(jié)果
Stack: [Dog, Horse, Cat] 元素Horse的位置: 2
要檢查堆棧是否為空,我們使用empty()方法。例如,
import java.util.Stack; class Main { public static void main(String[] args) { Stack<String> animals= new Stack<>(); //將元素添加到Stack animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Stack: " + animals); //檢查堆棧是否為空 boolean result = animals.empty(); System.out.println("堆棧是空的嗎? " + result); } }
輸出結(jié)果
Stack: [Dog, Horse, Cat] 堆棧是空的嗎? false
本Stack類提供直接執(zhí)行堆棧的數(shù)據(jù)結(jié)構(gòu)。但是,建議不要使用它。而是使用ArrayDeque類(實(shí)現(xiàn)Deque接口)在Java中實(shí)現(xiàn)堆棧數(shù)據(jù)結(jié)構(gòu)。
要了解更多信息,請?jiān)L問:Java ArrayDeque