Kelas Java Stack – Panduan Lengkap Penggunaan dan Metode
Kelas Java Stack
Tutorial ini menjelaskan kelas Stack Java, metodenya yang inti, dan contoh praktis untuk membantu Anda menguasai operasi stack.
Framework koleksi Java mencakup kelas Stack yang mengimplementasikan struktur data stack klasik. Menurut dokumentasi resmi Java, Stack memperluas Vector, mewarisi semua metodenya sambil menambahkan operasi spesifik stack.

Implementasi Stack
Stack mengikuti prinsip Last In, First Out (LIFO): elemen dipush ke atas dan di-pop dari atas. Diagram berikut menggambarkan perilaku ini.

Membuat Stack
Untuk membuat stack, impor java.util.Stack dan buat instance dengan tipe generik yang diinginkan:
Stack<Type> stack = new Stack<>();
Contoh:
// Integer stack Stack<Integer> intStack = new Stack<>(); // String stack Stack<String> stringStack = new Stack<>();
Metode Stack
Selain metode Vector yang diwarisi, Stack menyediakan lima operasi khusus yang membedakannya dari koleksi generik. Untuk daftar lengkap metode Vector, lihat dokumentasi kelas Vector.
Metode push()
Metode push() menambahkan elemen ke atas stack.
import java.util.Stack; class Main { public static void main(String[] args) { Stack<String> animals = new Stack<>(); animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Stack: " + animals); } }
Output
Stack: [Dog, Horse, Cat]
Metode pop()
Metode pop() menghapus dan mengembalikan elemen di atas stack.
import java.util.Stack; class Main { public static void main(String[] args) { Stack<String> animals = new Stack<>(); animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Initial Stack: " + animals); String removed = animals.pop(); System.out.println("Removed Element: " + removed); } }
Output
Initial Stack: [Dog, Horse, Cat] Removed Element: Cat
Metode peek()
Metode peek() mengambil elemen teratas tanpa menghapusnya.
import java.util.Stack; class Main { public static void main(String[] args) { Stack<String> animals = new Stack<>(); animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Stack: " + animals); String top = animals.peek(); System.out.println("Element at top: " + top); } }
Output
Stack: [Dog, Horse, Cat] Element at top: Cat
Metode search()
Metode search() mengembalikan posisi 1-basis dari elemen dari atas stack, atau -1 jika tidak ada.
import java.util.Stack; class Main { public static void main(String[] args) { Stack<String> animals = new Stack<>(); animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Stack: " + animals); int pos = animals.search("Horse"); System.out.println("Position of Horse: " + pos); } }
Output
Stack: [Dog, Horse, Cat] Position of Horse: 2
Metode empty()
Metode empty() memeriksa apakah stack memiliki elemen.
import java.util.Stack; class Main { public static void main(String[] args) { Stack<String> animals = new Stack<>(); animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Stack: " + animals); boolean isEmpty = animals.empty(); System.out.println("Is the stack empty? " + isEmpty); } }
Output
Stack: [Dog, Horse, Cat] Is the stack empty? false
Gunakan ArrayDeque Sebagai Ganti Stack
Meskipun Stack mengimplementasikan stack, ia dianggap sebagai kode lama. Kode Java modern lebih menyukai ArrayDeque (mengimplementasikan antarmuka Deque) untuk fungsionalitas stack karena menawarkan performa yang lebih baik dan semantik yang lebih jelas. Untuk lebih banyak detail, lihat: