Deque.offerFirst în Java

offerFirst adaugă un element la începutul unui Deque, offerLast la sfârșit. Returnează true dacă a reușit.

Sintaxă
boolean offerFirst(E e)
boolean offerLast(E e)

void addFirst(E e)   // la fel, dar cu excepție când e plină
void addLast(E e)

Ce face Deque.offerFirst

offerFirst(x) pune x în față, offerLast(x) îl pune la final. Ambele returnează true; doar o coadă cu capacitate limitată și plină (de exemplu LinkedBlockingDeque cu limită) returnează false.

Variantele addFirst/addLast fac același lucru, dar aruncă IllegalStateException când coada este plină. offerLast este echivalent cu offer, iar addFirst cu push.

Parametri

Parametru Descriere
e Elementul adăugat (fără null la ArrayDeque).

Ce returnează

true dacă elementul a fost adăugat.

Exemple

Exemplul 1: Clienții VIP trec în față

import java.util.ArrayDeque;
import java.util.Deque;

public class Main {
    public static void main(String[] args) {
        Deque<String> coada = new ArrayDeque<>();
        String[][] sosiri = {{"Ana", "normal"}, {"Radu", "VIP"}, {"Elena", "normal"}, {"Mihai", "VIP"}};
        for (String[] s : sosiri) {
            if (s[1].equals("VIP")) {
                coada.offerFirst(s[0]);
            } else {
                coada.offerLast(s[0]);
            }
        }
        System.out.println(coada);
    }
}

Rezultat

[Mihai, Radu, Ana, Elena]

Exemplul 2: Deque cu capacitate limitată

import java.util.concurrent.LinkedBlockingDeque;

public class Main {
    public static void main(String[] args) {
        LinkedBlockingDeque<Integer> d = new LinkedBlockingDeque<>(2);
        System.out.println(d.offerFirst(1));
        System.out.println(d.offerLast(2));
        System.out.println(d.offerLast(3));
        System.out.println(d);
    }
}

Rezultat

true
true
false
[1, 2]

Greșeli frecvente

  • Crezi că offerFirst înlocuiește primul element. Îl împinge mai la dreapta și adaugă unul nou.
  • Ignori rezultatul false la o coadă limitată. Elementul nu a fost adăugat.

Comenzi înrudite

  • Deque: Coadă cu două capete: adaugi și scoți atât la început, cât și la sfârșit. Se folosește și ca stivă, și ca coadă.
  • Deque.pollFirst: pollFirst și pollLast scot primul sau ultimul element dintr-un Deque; peekFirst și peekLast doar îl arată. Pe gol dau null.
  • Deque.push: Folosește un Deque ca stivă: push pune un element deasupra, pop îl scoate pe cel de deasupra, peek îl arată fără să-l scoată.
  • Queue.offer: offer pune un element la coada cozii, poll îl scoate pe primul (sau dă null), peek îl arată pe primul fără să-l scoată.
  • List.addFirst: Adaugă un element la începutul (addFirst) sau la sfârșitul (addLast) listei; metode noi din Java 21.