Dobry wieczór. Właśnie uczę się o kolekcjach, stąd też moje pytanie. Czym różnią się metody add(), offer(), put() oraz remove(), poll(), take()? Wiem, że offer() oraz poll(), w odróżnieniu od put() oraz take() są nieblokujące oraz że tą drugą parę mogę wyrazić poprzez pierwszą, ale nie potrafię zrozumieć, czym odróżniają się od nich add() oraz remove(). Prosiłbym o jakieś krótkie wyjaśnienie, o co tu chodzi.
Której konkretnie kolekcji?
Przede wszystkim są wykorzystywane w różnych kolekcjach, które to mają inne założenia i implementacje. Zacząłbym od przestudiowania wszystkich kolekcji w javie albo przynajmniej tych najpopularniejszych.
Konkretnie mowa o interfejsie BlockingQueue
. Szukałem jeszcze informacji na ten temat. Dotarłem do tego, że te metody różnią się reakcją na pustą/pełną kolejkę.
Dla BlockingQueue
add()
rzuca wyjątkiem, gdy brak miejsca, a offer()
w tej samej sytuacji zwraca tylko false
, remove()
rzuci wyjątkiem, gdy kolejka pusta i nie zwraca elementu tylko wartość logiczną.
Rozumiem. W przypadku poll() będzie element lub null.
Dziękuję za pomoc w zrozumieniu tematu :)
Tak trudno sprawdzić w https://docs.oracle.com/javase/10/docs/api/java/util/concurrent/BlockingQueue.html ? ;)