Jaka jest różnica między metodami dodawania i oferowania w PriorityQueue Javy?


12

W java.util.PriorityQueue mamy metody add(E e)i offer(E e). Obie metody są udokumentowane jako:

Wstawia określony element do tej kolejki priorytetowej.

Jakie są różnice między tymi dwiema metodami?

Odpowiedzi:


17

Różnica polega na tym, offer()że zwróci, falsejeśli nie wstawi elementu do kolejki o ograniczonym rozmiarze , a add()wyrzuci znak IllegalStateException.

Powinieneś używać, offer()gdy niepowodzenie wstawienia elementu byłoby normalne, a add()gdy awaria byłaby wyjątkowym zjawiskiem (z tym trzeba sobie poradzić).


4

Aby znaleźć różnicę, należy postępować zgodnie z javadocami API PriorityQueue API, które z kolei mają sekcje „Określone przez”, które odnoszą czytelnika do odpowiednich metod w Queueinterfejsie:

  • Queue.add

    Wstawia określony element do tej kolejki, jeśli jest to możliwe natychmiast, bez naruszania ograniczeń pojemności, zwracania wartości true po sukcesie i zgłaszania wyjątku IllegalStateException, jeśli brak dostępnej przestrzeni ...
    Zwraca: true(zgodnie z określeniem Collection.add (E) )
    Rzuty: IllegalStateException- jeśli w tym momencie nie można dodać elementu z powodu ograniczeń pojemności ...

  • Kolejka. Oferta

    Wstawia określony element do tej kolejki, jeśli jest to możliwe natychmiast, bez naruszenia ograniczeń pojemności. W przypadku korzystania z kolejki o ograniczonej pojemności metoda ta jest na ogół lepsza niż dodawanie (E), co może nie dać wstawienia elementu tylko przez zgłoszenie wyjątku ...
    Zwraca: truejeśli element został dodany do tej kolejki, w przeciwnym razie false...

Obie metody są obecne, ponieważ muszą być zaimplementowane przez zadeklarowany interfejs.

Zauważ, że ponieważ PriorityQueue nie ma ograniczeń (jak stwierdzono w javadocs: „ niepowiązana kolejka priorytetowa oparta na stercie priorytetów ...”), preferencje projektantów API wyrażone powyżej nie mają zastosowania. Oznacza to, że programista może wybrać metodę, która lepiej odpowiada ich potrzebom w określonym kontekście użytkowania.


2
Pffft poszedłeś i spojrzałeś na dokumenty. Słaby. ; P
yannis

1
@ YannisRizos następną rzeczą, którą zobaczysz, będę narzekał jak Col Shrapnel :) och, nie możesz konkurować z 30-sekundowymi odpowiedziami: pytanie otrzyma 5 odpowiedzi, zanim zdołasz znaleźć odpowiedni link bla bla
gnat
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.