Menguasai Antarmuka Queue Java: Metode, Implementasi, dan Penggunaan Praktis
Menguasai Antarmuka Queue Java
Temukan bagaimana antarmuka Queue Java mendukung struktur data FIFO, metodenya yang inti, dan kelas implementasi yang paling umum digunakan.
Kelas yang Mengimplementasikan Queue
Karena Queue adalah antarmuka, Anda akan bekerja dengan kelas konkret yang menyediakan fungsionalitas asli. Tiga implementasi yang paling banyak digunakan adalah:
ArrayDeque – double-ended queue yang dapat diubah ukurannya dengan operasi tambah/hapus yang cepat. LinkedList – daftar berambilan ganda yang mendukung operasi queue dan deque. PriorityQueue – queue berbasis heap yang mengurutkan elemen berdasarkan urutan alami atau komparator yang disediakan.

Subantarmuka yang Memperluas Queue
Antarmuka Queue diperluas oleh beberapa subantarmuka yang menambahkan kemampuan pemblokiran atau double-ended:
Deque – menambahkan operasi push/pop di kedua ujung. BlockingQueue – memperkenalkan enqueue/dequeue yang aman untuk thread dengan opsi batas waktu. BlockingDeque – menggabungkan pemblokiran dengan semantik double-ended.

Struktur Data Queue dalam Aksi
Queue beroperasi berdasarkan prinsip First-In, First-Out (FIFO): elemen ditambahkan ke belakang dan dihapus dari depan.

Cara Menggunakan Queue di Java
Impor antarmuka dengan java.util.Queue dan buat instance melalui kelas konkret:
import java.util.Queue; import java.util.LinkedList; import java.util.ArrayDeque; import java.util.PriorityQueue; Queue<String> animal1 = new LinkedList<>(); Queue<String> animal2 = new ArrayDeque<>(); Queue<String> animal3 = new PriorityQueue<>();
Setiap objek mewarisi semua metode Queue dan API Collection generik.
Metode Inti Queue
Antarmuka ini memperluas Collection, jadi mencakup semua metodenya. Operasi spesifik queue yang paling sering digunakan adalah:
- add(E e) – menyisipkan elemen; melempar pengecualian jika gagal.
- offer(E e) – menyisipkan elemen; mengembalikan
false jika gagal tanpa melempar. - element() – mengambil, tanpa menghapus, head; melempar jika kosong.
- peek() – mengambil, tanpa menghapus, head; mengembalikan
null jika kosong. - remove() – menghapus dan mengembalikan head; melempar jika kosong.
- poll() – menghapus dan mengembalikan head; mengembalikan
null jika kosong.
Contoh Implementasi LinkedList
import java.util.Queue; import java.util.LinkedList; public class Main { public static void main(String[] args) { Queue<Integer> numbers = new LinkedList<>(); numbers.offer(1); numbers.offer(2); numbers.offer(3); System.out.println("Queue: " + numbers); int accessed = numbers.peek(); System.out.println("Accessed Element: " + accessed); int removed = numbers.poll(); System.out.println("Removed Element: " + removed); System.out.println("Updated Queue: " + numbers); } }
Output
Queue: [1, 2, 3] Accessed Element: 1 Removed Element: 1 Updated Queue: [2, 3]
Untuk wawasan lebih dalam, lihat Java LinkedList.
Contoh Implementasi PriorityQueue
import java.util.Queue; import java.util.PriorityQueue; public class Main { public static void main(String[] args) { Queue<Integer> numbers = new PriorityQueue<>(); numbers.offer(5); numbers.offer(1); numbers.offer(2); System.out.println("Queue: " + numbers); int accessed = numbers.peek(); System.out.println("Accessed Element: " + accessed); int removed = numbers.poll(); System.out.println("Removed Element: " + removed); System.out.println("Updated Queue: " + numbers); } }
Output
Queue: [1, 5, 2] Accessed Element: 1 Removed Element: 1 Updated Queue: [2, 5]
Untuk wawasan lebih dalam, lihat Java PriorityQueue.
Tunggu tutorial mendatang kami yang menjelajahi subantarmuka Queue—Deque, BlockingQueue, dan BlockingDeque—dan cara menggunakannya dalam skenario dunia nyata.