Stack ใน Java เป็นโครงสร้างข้อมูล คล้ายกับคิว อาร์เรย์ รายการที่เชื่อมโยง หรือแผนผัง จุดที่แตกต่างจากที่อื่นคือ Java Stackนั้นใช้หลักการ Last In, First Out (LIFO) สิ่งนี้หมายความว่า เมื่อคุณใช้สองคำสั่งเพื่อเพิ่มและลบองค์ประกอบออกจากสแตก รายการแรกที่คุณลบจะเป็นรายการสุดท้ายที่คุณเพิ่มเสมอ มาดู Java Stack Class กันดีกว่า
สำรวจ Java Stack Class
Java Stack Class เป็นส่วนขยายของ คลาส Vectorซึ่งขยายคลาสList เนื่องจากเวกเตอร์ไม่แน่นอนและสามารถขยายและย่อตามความต้องการขององค์ประกอบภายในStack s จึงสามารถเปลี่ยนขนาดได้ตามความต้องการ ส่วนขยายของ คลาส Vectorเพิ่มห้าการดำเนินการที่เปลี่ยนVectorเป็นกอง ห้าการดำเนินการเหล่านี้คือ:- .push(รายการ E) – วางองค์ประกอบไว้บนสุดของสแต็ก
- .pop() – ลบองค์ประกอบที่ด้านบนของสแต็กและส่งกลับเป็นค่าของฟังก์ชัน
- .peek() – ดูองค์ประกอบที่ด้านบนของสแต็กโดยไม่ต้องลบออก
- .empty() – ฟังก์ชันบูลีนเพื่อทดสอบว่าสแต็กว่างเปล่าหรือไม่ คืนค่า 0 หรือ 1
- .search(Object o) – ค้นหา o และส่งคืนตำแหน่ง ค่าเป็นแบบอิง 1 ไม่ใช่แบบอิง 0

การเข้ารหัสตัวอย่าง Java Stack
ตอนนี้เรารู้ฟังก์ชันของStackแล้ว เรามาเขียนโค้ดตัวอย่าง java stack กัน Stackมีประโยชน์อย่างมากในการจัดการกับข้อมูลที่ต้องเก็บไว้ชั่วคราวและเรียกใช้อย่างรวดเร็ว เนื่องจากสแต็กคือ LIFO จึงมีประโยชน์อย่างยิ่งสำหรับการสำรวจโหนดเมื่อสำรวจโครงสร้างข้อมูลแบบทรี ก่อนที่เราจะพูดถึงทั้งหมดนั้น เรามาสร้างสแต็กพื้นฐานกันก่อน รหัสที่จะใช้สแต็คมีดังนี้:
import java.util.*;
class Main {
public static void main(String[] args) {
Stack<Integer> stackExample = new Stack<Integer>();
นั่นคือทั้งหมดที่คุณต้องทำเพื่อสร้างStack ที่ ว่างเปล่า คุณยังสามารถประกาศได้ง่ายๆ โดยไม่ต้องประกาศประเภทข้อมูลโดยใช้:
Stack example = new Stack();
โปรดจำไว้ว่าเนื่องจากStack s เปลี่ยนแปลงไม่ได้ เมื่อเราใส่องค์ประกอบต่างๆ ลงใน stack มันจะปรับขนาดโดยอัตโนมัติ ทีนี้มาดูวิธีใช้ฟังก์ชัน Stack กัน
การใช้งาน Java Stack
มาดูวิธีการใช้ 5 วิธีที่เราสำรวจไปก่อนหน้านี้โดยสังเขป การใช้จาวาสแต็กนั้นง่ายต่อการจดจำ หากคุณคิดว่ามันเป็นสแต็กเพลต คุณวางจานลงบนปึก แต่การจะได้จาน คุณไม่ได้ไปที่ด้านล่าง คุณต้องหยิบจานจากด้านบน อันสุดท้ายที่คุณใส่คืออันแรกที่คุณถอด ขยายตัวอย่างก่อนหน้าของเราด้วยstackExampleฟังก์ชันมีดังนี้:ดัน
// pushing integers onto the Stack
stackExample.push(5);
stackExample.push(10);
ณ จุดนี้ เราจะแสดงฟังก์ชันอื่นๆ เหมือนกับว่าเราผลักจำนวนเต็มสองตัวนี้ไปยังตัวอย่าง Java stack ทุกครั้ง
โผล่
//popping integers off of the Stack
System.out.println(stackExample.pop());
System.out.println(stackExample.pop());
เอาท์พุต:
10
5
มันว่างเปล่า
ตอนนี้ สมมติว่าคุณต้องการลบองค์ประกอบทั้งหมดออกจากกองแต่คุณไม่แน่ใจว่ามีกี่องค์ประกอบ คุณสามารถรวม ฟังก์ชัน Boolean.isEmpty ()เข้ากับ precondition while loop เพื่อแสดงองค์ประกอบทั้งหมดจากStack ดูวิธีการติดตั้ง java Stack นี้
while(!stackExample.isEmpty()) {
System.out.println(stackExample.pop());
}
เอาต์พุต
10
5
แอบดู
เราสามารถใช้.peek()เป็นการใช้งานสแต็กใน Java เพื่อดูรายการถัดไปในสแต็กโดยไม่ต้องลบออก
System.out.println(stackExample.peek());
เอาต์พุต
10
หากเราป๊อปและพิมพ์Stackมันจะคืนค่า 10 และ 5 เนื่องจาก 10 ยังอยู่ในสแต็ก เราเพิ่งดูมัน เราไม่ได้ลบมันด้วยฟังก์ชั่นป๊อป ฟังก์ชั่น peek เป็นเครื่องมือที่ยอดเยี่ยมสำหรับStack s ใน java
ค้นหา
หากเราต้องการค้นหาองค์ประกอบเฉพาะ การใช้สแต็กใน Java จะใช้.search(e); เพื่อค้นหามัน
System.out.println(stackExample.search(5));
เอาต์พุต
2
โปรดจำไว้ว่านี่เป็นเพราะเรานับจากด้านบนของStack และ Java Stack s เริ่มต้นที่ 1 ไม่ใช่ 0 เหมือนArray เมื่อดูที่สแต็ก มันคือ (10) --> (5) และ 5 อยู่ในจุดที่ 2 หากคุณพยายามค้นหาองค์ประกอบที่ไม่ได้อยู่ในStackคุณจะได้รับ -1 เป็นเอาต์พุต
วนซ้ำ
เมื่อทำงานกับคอลเล็กชันใดๆ อาจมีบางครั้งที่คุณต้องมองหาองค์ประกอบหลายรายการ เพื่อประหยัดความซับซ้อนและไม่ต้องค้นหาในStackหลายครั้ง คุณสามารถใช้การวนซ้ำ เนื่องจากStackใน Java ขยาย คลาส Listจึงมีหลายตัวเลือกสำหรับการวนซ้ำ หนึ่งในวิธีที่ง่ายที่สุดคือใช้ฟังก์ชันListIterator ListIteratorนั้นดีที่ให้คุณสำรวจStackจากบนลงล่างหรือจากล่างขึ้นบนโดยใช้. hasPrevious()หรือ.hasNext() นี่คือลักษณะ:
ListIterator<Integer> exampleIterator = stackExample.listIterator(stackExample.size());
while (exampleIterator.hasPrevious()) {
int iteration = exampleIterator.previous();
System.out.println(iteration);
}
เอาต์พุต
10
5
โปรดทราบว่าเมื่อคุณวนซ้ำผ่านStack s ใน Java คุณจะไม่ต้องลบองค์ประกอบใดๆ ในนั้น การวนซ้ำช่วยให้คุณมองเห็นทุกองค์ประกอบในสแต็กตามลำดับ เมื่อคุณทำเช่นนี้ คุณสามารถค้นหาตำแหน่งที่มีองค์ประกอบบางอย่างอยู่ แล้วผ่านและจัดการองค์ประกอบเหล่านั้น คุณสามารถนับ ลบ หรือแม้แต่เปลี่ยนแปลงได้หากจำเป็น
GO TO FULL VERSION