Ce face Queue.offer
offer(x) adaugă x la sfârșitul cozii și returnează true. Returnează false doar la cozile cu capacitate limitată care sunt pline (de exemplu ArrayBlockingQueue); la ArrayDeque și LinkedList reușește mereu.
poll() scoate și returnează primul element; pe o coadă goală returnează null. peek() returnează primul element fără să-l scoată, tot null pe coadă goală.
Perechile cu excepții sunt add (aruncă IllegalStateException dacă e plină), remove() și element() (aruncă NoSuchElementException dacă e goală).
Parametri
| Parametru | Descriere |
|---|---|
e |
Elementul adăugat (fără null la ArrayDeque). |
Ce returnează
offer: boolean. poll, peek: elementul sau null.
Exemple
Exemplul 1: Comenzi la imprimantă
import java.util.ArrayDeque;
import java.util.Queue;
public class Main {
public static void main(String[] args) {
Queue<String> tiparire = new ArrayDeque<>();
tiparire.offer("factura_101.pdf");
tiparire.offer("contract.docx");
System.out.println("Urmează: " + tiparire.peek());
System.out.println("Tipărit: " + tiparire.poll());
System.out.println("Tipărit: " + tiparire.poll());
System.out.println("Tipărit: " + tiparire.poll());
System.out.println("Urmează: " + tiparire.peek());
}
}
Rezultat
Urmează: factura_101.pdf
Tipărit: factura_101.pdf
Tipărit: contract.docx
Tipărit: null
Urmează: null
Exemplul 2: Coadă cu capacitate limitată
ArrayBlockingQueue are loc pentru 2 elemente: al treilea offer returnează false, iar add aruncă excepție.
import java.util.Queue;
import java.util.concurrent.ArrayBlockingQueue;
public class Main {
public static void main(String[] args) {
Queue<String> locuri = new ArrayBlockingQueue<>(2);
System.out.println(locuri.offer("Ana"));
System.out.println(locuri.offer("Radu"));
System.out.println(locuri.offer("Elena"));
try {
locuri.add("Mihai");
} catch (IllegalStateException e) {
System.out.println("add: IllegalStateException, coada e plină");
}
System.out.println(locuri);
}
}
Rezultat
true
true
false
add: IllegalStateException, coada e plină
[Ana, Radu]
Greșeli frecvente
- Testezi coada goală cu
peek() == nullcând coada poate conținenull(laLinkedList). FoloseșteisEmpty(). - Folosești
element()șiremove()fără să verifici dacă e goală. Aruncă excepție; preferăpeek()/poll().
Comenzi înrudite
Queue: Interfața pentru cozi: elementele intră la coadă și ies din față, în ordinea sosirii (FIFO), ca la ghișeu.Deque.offerFirst: offerFirst adaugă un element la începutul unui Deque, offerLast la sfârșit. Returnează true dacă a reușit.Deque.pollFirst: pollFirst și pollLast scot primul sau ultimul element dintr-un Deque; peekFirst și peekLast doar îl arată. Pe gol dau null.PriorityQueue: Coadă cu priorități: poll() scoate mereu cel mai mic element (sau primul după un Comparator), nu pe cel adăugat primul.ArrayDeque: Implementarea recomandată pentru cozi și stive: un array circular care crește automat, rapid la ambele capete.