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?
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:
Różnica polega na tym, offer()
że zwróci, false
jeś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ć).
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 Queue
interfejsie:
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 ...
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:true
jeśli element został dodany do tej kolejki, w przeciwnym raziefalse
...
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.