In java.util.PriorityQueue biz yöntemleri var add(E e)
ve offer(E e)
. Her iki yöntem de şu şekilde belgelenmiştir:
Belirtilen öğeyi bu öncelik sırasına ekler.
Bu iki yöntem arasındaki farklar nelerdir?
In java.util.PriorityQueue biz yöntemleri var add(E e)
ve offer(E e)
. Her iki yöntem de şu şekilde belgelenmiştir:
Belirtilen öğeyi bu öncelik sırasına ekler.
Bu iki yöntem arasındaki farklar nelerdir?
Yanıtlar:
Fark, yani offer()
döner false
bu kısıtlı boyutu eleman eklemek için başarısız olursa sıra ise, add()
bir durum oluşturur IllegalStateException
.
Sen kullanmalıdır offer()
bir öğe eklemek için başarısızlık normal olacağını ne zaman ve add()
başarısızlık (ihtiyaçlar ele alınması olduğunu) istisnai bir oluşumu olacağını zaman.
Farkı bulmak için, okuyucunun arabirimdeki ilgili yöntemlere başvuran "Tarafından Belirtilen" bölümlerine sahip olan PriorityQueue API javadoc'larını takip etmek gerekir Queue
:
Kapasite kısıtlamalarını ihlal etmeden hemen bunu yapabiliyorsa, başarı üzerine true döndürerek ve şu anda kullanılabilir bir alan yoksa bir IllegalStateException özel durumunu atabiliyorsa, belirtilen öğeyi bu kuyruğa ekler ...
Döndürür:true
( Collection.add (E) tarafından belirtildiği gibi )
Atar:IllegalStateException
- kapasite kısıtlamaları nedeniyle eleman şu anda eklenemezse ...
Kapasite kısıtlamalarını ihlal etmeden hemen bunu yapabiliyorsanız, belirtilen elemanı bu kuyruğa ekler. Kapasite kısıtlı bir kuyruk kullanırken, bu yöntem genellikle (E) eklemek için tercih edilir, bu da sadece bir istisna atarak bir eleman ekleyemez ...
Geri döner:true
eleman bu kuyruğa eklenmişse, başkafalse
...
Her iki yöntem de mevcuttur, çünkü bunların bildirilen arabirim tarafından uygulanması gerekir.
PriorityQueue sınırsız olduğundan (javadocs'ta belirtildiği gibi: " öncelik yığınına dayalı sınırsız öncelik sırası ..."), yukarıda ifade edilen API tasarımcılarının tercihinin geçerli olmadığını unutmayın. Bu, belirli bir kullanım bağlamında ihtiyaçlarına daha uygun yöntemi seçmenin programcının takdirine bırakıldığı anlamına gelir.