Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Menyesuaikan Susunan Isih bagi PriorityQueue?

Bagaimanakah Saya Boleh Menyesuaikan Susunan Isih bagi PriorityQueue?

Susan Sarandon
Susan Sarandonasal
2024-12-13 08:40:10779semak imbas

How Can I Customize the Sort Order of a PriorityQueue?

Menyesuaikan Susunan Isih dalam PriorityQueue

PriorityQueue ialah struktur data berguna yang mengekalkan susunan tersusun elemennya. Secara lalai, ia mengisih berdasarkan susunan semula jadi unsurnya. Untuk menyesuaikan pesanan ini, anda boleh menggunakan Comparator.

Menggunakan Comparator

Pembina PriorityQueue mempunyai kelebihan beban yang mengambil Comparator sebagai hujah. Pembanding ini mentakrifkan kriteria pengisihan untuk baris gilir. Sebagai contoh, pertimbangkan PriorityQueue yang mengisih rentetan berdasarkan panjangnya:

Comparator<String> comparator = new StringLengthComparator();
PriorityQueue<String> queue = new PriorityQueue<>(10, comparator);

Pelaksanaan Pembanding

Kelas StringLengthComparator melaksanakan antara muka Comparator:

public class StringLengthComparator implements Comparator<String> {
    public int compare(String x, String y) {
        return x.length() - y.length();
    }
}

Dengan membandingkan panjang rentetan, pembanding menetapkan jenis yang diingini pesanan.

Tawaran lwn. Tambah

Tawaran dan kaedah tambah kedua-duanya menambah elemen pada baris gilir. Walau bagaimanapun, tawaran kembali benar jika elemen berjaya ditambah, manakala tambah membuang pengecualian jika baris gilir penuh. Dalam kes PriorityQueue, yang tidak terhad, tiada perbezaan fungsi antara kedua-dua kaedah.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyesuaikan Susunan Isih bagi PriorityQueue?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn