Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Java PriorityQueue: Dasar, Operasi, dan Pengurutan Kustom

Java PriorityQueue

Jelajahi kelas PriorityQueue dalam framework koleksi Java melalui contoh yang jelas dan panduan praktik terbaik.

Kelas PriorityQueue mengimplementasikan struktur data heap dan memenuhi antarmuka Queue, menawarkan pengambilan elemen yang efisien berdasarkan prioritas daripada urutan penyisipan.

Java PriorityQueue: Dasar, Operasi, dan Pengurutan Kustom

Berbeda dengan queue standar, elemen dikembalikan dalam urutan terurut. Jika Anda membutuhkan urutan naik, head queue adalah elemen terkecil; setiap penghapusan berikutnya menghasilkan nilai terkecil selanjutnya. Perhatikan bahwa urutan internal tidak dijamin—hanya urutan ekstraksi yang terurut.


Membuat PriorityQueue

Mulailah dengan mengimpor java.util.PriorityQueue:

import java.util.PriorityQueue; PriorityQueue<Integer> numbers = new PriorityQueue<>(); 

Konfigurasi default ini menggunakan urutan alami (naik). Anda dapat menyesuaikan urutan dengan menyediakan Comparator saat membuat queue.


Metode Utama PriorityQueue

Semua metode yang didefinisikan dalam antarmuka Queue tersedia, ditambah beberapa operasi spesifik queue.


Menyisipkan Elemen

Contoh:

import java.util.PriorityQueue; class Main { public static void main(String[] args) { PriorityQueue<Integer> numbers = new PriorityQueue<>(); numbers.add(4); numbers.add(2); System.out.println("PriorityQueue: " + numbers); numbers.offer(1); System.out.println("Updated PriorityQueue: " + numbers); } } 

Output

PriorityQueue: [2, 4] Updated PriorityQueue: [1, 4, 2]

Meski 4 ditambahkan sebelum 2, head tetap 2 karena ia elemen terkecil. Menambahkan 1 mengurutkan ulang queue sehingga 1 menjadi head.


Mengakses Elemen

Gunakan peek() untuk melihat head tanpa menghapusnya:

import java.util.PriorityQueue; class Main { public static void main(String[] args) { PriorityQueue<Integer> numbers = new PriorityQueue<>(); numbers.add(4); numbers.add(2); numbers.add(1); System.out.println("PriorityQueue: " + numbers); int number = numbers.peek(); System.out.println("Accessed Element: " + number); } } 

Output

PriorityQueue: [1, 4, 2] Accessed Element: 1

Menghapus Elemen

Contoh:

import java.util.PriorityQueue; class Main { public static void main(String[] args) { PriorityQueue<Integer> numbers = new PriorityQueue<>(); numbers.add(4); numbers.add(2); numbers.add(1); System.out.println("PriorityQueue: " + numbers); boolean result = numbers.remove(2); System.out.println("Is the element 2 removed? " + result); int number = numbers.poll(); System.out.println("Removed Element Using poll(): " + number); } } 

Output

PriorityQueue: [1, 4, 2] Is the element 2 removed? true Removed Element Using poll(): 1

Melakukan Iterasi pada PriorityQueue

Lakukan iterasi dengan iterator() (memerlukan java.util.Iterator):

import java.util.PriorityQueue; import java.util.Iterator; class Main { public static void main(String[] args) { PriorityQueue<Integer> numbers = new PriorityQueue<>(); numbers.add(4); numbers.add(2); numbers.add(1); System.out.print("PriorityQueue using iterator(): "); Iterator<Integer> iterate = numbers.iterator(); while (iterate.hasNext()) { System.out.print(iterate.next()); System.out.print(", "); } } } 

Output

PriorityQueue using iterator(): 1, 4, 2,

Metode Tambahan

MetodeDeskripsi
contains(element)Mengembalikan true jika elemen ada dalam queue.
size()Mengembalikan jumlah elemen dalam queue.
toArray()Mengonversi queue ke array.

Pengurutan Kustom dengan Comparator

Untuk membalik urutan alami atau mengimplementasikan prioritas kustom apa pun, sediakan Comparator saat membuat queue:

import java.util.PriorityQueue; import java.util.Comparator; class Main { public static void main(String[] args) { PriorityQueue<Integer> numbers = new PriorityQueue<>(new CustomComparator()); numbers.add(4); numbers.add(2); numbers.add(1); numbers.add(3); System.out.print("PriorityQueue: " + numbers); } } class CustomComparator implements Comparator<Integer> { @Override public int compare(Integer a, Integer b) { return b.compareTo(a); // reverse order } } 

Output

PriorityQueue: [4, 3, 1, 2]

Comparator kustom memastikan head adalah elemen terbesar. Untuk wawasan lebih dalam, lihat Java Comparator API.


java

  1. Menguasai Operator Java: Tipe, Sintaks, & Contoh Praktis
  2. Komentar Java: Tipe, Penggunaan, dan Best Practices
  3. Menguasai Java Enhanced For Loop: Sintaks, Contoh, dan Best Practices
  4. Menguasai String Java: Pembuatan, Metode, dan Best Practices
  5. Menguasai Antarmuka Java: Konsep, Implementasi, dan Praktik Terbaik
  6. Menguasai Kelas Dalam Anonim Java: Definisi, Sintaks, dan Contoh Praktis
  7. Menguasai Java Try-with-Resources: Manajemen Sumber Daya Otomatis Dijelaskan
  8. Anotasi Java Dijelaskan: Jenis, Penempatan, dan Contoh Praktis
  9. Pernyataan Java: Panduan Praktis untuk Mendeteksi Bug dan Memastikan Keandalan Kode
  10. Memahami Java Vector: Penggunaan, Fitur, dan Perbandingan dengan ArrayList