โค้ดยิม/จาวาบล็อก/สุ่ม/Java Stack 101: เจาะลึกถึงคลาส Stack
John Squirrels
ระดับ
San Francisco

Java Stack 101: เจาะลึกถึงคลาส Stack

เผยแพร่ในกลุ่ม
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
สแต็กยังสืบทอดเมธอดทั้งหมดที่เป็นส่วนหนึ่งของVectorรวมถึงแต่ไม่จำกัดเพียงtoString() , container() , indexOf()และlastElement( ) Java Stack 101: เจาะลึกถึง Stack Class - 1

การเข้ารหัสตัวอย่าง 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 คุณจะไม่ต้องลบองค์ประกอบใดๆ ในนั้น การวนซ้ำช่วยให้คุณมองเห็นทุกองค์ประกอบในสแต็กตามลำดับ เมื่อคุณทำเช่นนี้ คุณสามารถค้นหาตำแหน่งที่มีองค์ประกอบบางอย่างอยู่ แล้วผ่านและจัดการองค์ประกอบเหล่านั้น คุณสามารถนับ ลบ หรือแม้แต่เปลี่ยนแปลงได้หากจำเป็น
ความคิดเห็น
  • เป็นที่นิยม
  • ใหม่
  • เก่า
คุณต้องลงชื่อเข้าใช้เพื่อแสดงความคิดเห็น
หน้านี้ยังไม่มีความคิดเห็นใด ๆ