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, 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ć).
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:
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:truejeś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.