Di java.util.PriorityQueue kita memiliki metode add(E e)
dan offer(E e)
. Kedua metode didokumentasikan sebagai:
Menyisipkan elemen yang ditentukan ke dalam antrian prioritas ini.
Apa perbedaan antara kedua metode ini?
sumber
Di java.util.PriorityQueue kita memiliki metode add(E e)
dan offer(E e)
. Kedua metode didokumentasikan sebagai:
Menyisipkan elemen yang ditentukan ke dalam antrian prioritas ini.
Apa perbedaan antara kedua metode ini?
Perbedaannya adalah bahwa offer()
akan kembali false
jika gagal memasukkan elemen pada ukuran Antrian terbatas , sedangkan add()
akan melempar IllegalStateException
.
Anda harus menggunakan offer()
ketika kegagalan untuk memasukkan elemen akan normal, dan add()
ketika kegagalan akan menjadi kejadian luar biasa (yang perlu ditangani).
Untuk mengetahui perbedaannya, kita harus mengikuti javadocs API Prioritas yang pada gilirannya memiliki bagian "Ditentukan Oleh" yang merujuk pembaca ke masing-masing metode di Queue
antarmuka:
Menyisipkan elemen yang ditentukan ke dalam antrian ini jika memungkinkan untuk segera melakukannya tanpa melanggar batasan kapasitas, mengembalikan true setelah sukses dan melempar IllegalStateException jika tidak ada ruang yang tersedia saat ini ...
Pengembalian:true
(seperti yang ditentukan oleh Collection.add (E) )
Melempar:IllegalStateException
- jika elemen tidak dapat ditambahkan saat ini karena batasan kapasitas ...
Menyisipkan elemen yang ditentukan ke dalam antrian ini jika memungkinkan untuk segera melakukannya tanpa melanggar batasan kapasitas. Saat menggunakan antrian terbatas kapasitas, metode ini umumnya lebih disukai untuk menambahkan (E), yang dapat gagal memasukkan elemen hanya dengan melemparkan pengecualian ...
Pengembalian:true
jika elemen ditambahkan ke antrian ini, makafalse
...
Kedua metode hadir karena ini diperlukan untuk diimplementasikan oleh antarmuka yang dideklarasikan.
Perhatikan bahwa karena PriorityQueue tidak terikat (sebagaimana dinyatakan dalam javadocs: " antrian prioritas tidak terikat berdasarkan tumpukan prioritas ..."), preferensi desainer API yang dinyatakan di atas tidak berlaku. Ini berarti dibiarkan atas kebijaksanaan programmer untuk memilih metode yang lebih sesuai dengan kebutuhan mereka dalam konteks penggunaan tertentu.