Biasanya, baris gilir mengikut prinsip first-in-first-out (FIFO), tetapi PriorityQueue Pendekatan berasaskan keutamaan diikuti apabila mengakses elemen dengan cara keutamaan. setiap elemen baris gilir Mempunyai keutamaan yang berkaitan dengannya. Elemen diutamakan mengikut susunan semula jadinya pesanan. Walau bagaimanapun, kami boleh menyediakan pesanan tersuai menggunakan komparator PriorityQueue sebenarnya tidak diisih, ia hanya diambil dalam susunan yang diisih membolehkan kami mengubah suai elemen PriorityQueue dengan mudah.
Sebelum memulakan program, mari kita fahami beberapa kaedah terbina dalam PriorityQueue -
add() − Ia digunakan untuk menambah satu elemen pada baris gilir
offer() − Ia juga memasukkan elemen yang diberikan ke dalam baris gilir.
peek() − digunakan untuk mendapatkan semula elemen pertama baris gilir.
remove() − Ia digunakan untuk mengalih keluar elemen yang ditentukan daripada baris gilir.
Tentukan objek koleksi PriorityQueue dan gunakan kaedah 'add()' untuk menyimpan beberapa elemen
Sekarang, menggunakan kaedah 'peek()' tunjukkan elemen baris gilir pertama dan kemudian alih keluar ini Alih keluar elemen daripada baris gilir menggunakan kaedah 'move()'
Bergerak lebih jauh dan masukkan elemen baharu pada kedudukan yang sama menggunakan kaedah terbina dalam
Sekali lagi tunjukkan elemen pertama yang diubah suai.
Dalam contoh berikut, kami akan mengubah suai elemen PriorityQueue
Tiada keutamaan untuk pembanding, yang bermaksud mereka akan diakses dalam tertib menaik.
import java.util.*; public class Modify { public static void main(String[] args) { PriorityQueue<Integer> queuePq = new PriorityQueue<>(); // inserting elements queuePq.add(7); queuePq.add(9); queuePq.add(2); queuePq.add(4); queuePq.add(3); System.out.println("Original Queue: " + queuePq); int head1 = queuePq.peek(); // accessing first element System.out.println("The first element in Queue: " + head1); queuePq.remove(2); // removing first element queuePq.offer(1); // adding new element at first position int head2 = queuePq.peek(); // accessing first element System.out.println("The updated first element in Queue: " + head2); queuePq.offer(2); // adding new element at first position System.out.println("Newly updated Queue: " + queuePq); } }
Original Queue: [2, 3, 7, 9, 4] The first element in Queue: 2 The updated first element in Queue: 1 Newly updated Queue: [1, 3, 2, 9, 4, 7]
Tentukan objek koleksi PriorityQueue menggunakan kaedah terbina dalam yang dipanggil 'Collections.reverseOrder()' digunakan untuk menyimpan elemen dalam tertib menurun.
Sekarang, ikuti langkah yang sama yang diterangkan dalam contoh sebelumnya.
Dalam contoh berikut, kami akan mengubah suai elemen PriorityQueue Gunakan pembanding untuk keutamaan untuk menyediakan akses dalam tertib menurun.
import java.util.*; public class Modify { public static void main(String[] args) { PriorityQueue<Integer> queuePq = new PriorityQueue<>(Collections.reverseOrder()); // inserting elements queuePq.add(7); queuePq.add(9); queuePq.add(2); queuePq.add(1); queuePq.add(3); System.out.println("Original Queue: " + queuePq); int head1 = queuePq.peek(); // accessing first element System.out.println("The first element in Queue: " + head1); queuePq.remove(9); // removing first element queuePq.offer(8); // adding new element at first position int head2 = queuePq.peek(); // accessing first element System.out.println("The updated first element in Queue: " + head2); queuePq.offer(9); // adding new element at first position System.out.println("Newly updated Queue: " + queuePq); } }
Original Queue: [9, 7, 2, 1, 3] The first element in Queue: 9 The updated first element in Queue: 8 Newly updated Queue: [9, 7, 8, 1, 3, 2]
Kami memulakan artikel ini dengan mentakrifkan kelas PriorityQueue bagi Rangka Kerja Koleksi Java Laksanakan kandungan antara muka Baris Gilir. Dalam bahagian seterusnya kita akan membincangkan beberapa terbina dalam Kaedah yang digunakan dalam program Java untuk mengubah suai elemen dalam PriorityQueue yang diberikan
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengubah suai elemen PriorityQueue dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!