List.addFirst în Java

Adaugă un element la începutul (addFirst) sau la sfârșitul (addLast) listei; metode noi din Java 21.

Sintaxă
default void addFirst(E e)
default void addLast(E e)

Ce face List.addFirst

Din Java 21, List face parte din familia colecțiilor secvențiale (SequencedCollection): toate au metode cu nume clare pentru capete. addFirst(e) este echivalent cu add(0, e), iar addLast(e) cu add(e).

Pe un ArrayList, addFirst mută toate elementele cu o poziție, deci este lent pe liste mari. Pe LinkedList și ArrayDeque este rapid. Pe listele nemodificabile aruncă UnsupportedOperationException.

Parametri

Parametru Descriere
e Elementul de adăugat.

Ce returnează

Nimic (void).

Exemple

Exemplul 1: Clasament: cel mai nou rezultat în față

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> stiri = new ArrayList<>();
        stiri.addLast("Ninsoare la Suceava");
        stiri.addLast("Trafic pe A1");
        stiri.addFirst("ULTIMA ORĂ: meci câștigat");
        System.out.println(stiri);
        System.out.println("Prima știre: " + stiri.getFirst());
    }
}

Rezultat

[ULTIMA ORĂ: meci câștigat, Ninsoare la Suceava, Trafic pe A1]
Prima știre: ULTIMA ORĂ: meci câștigat

Exemplul 2: addFirst este add(0, …)

Cele două liste ajung identice: metodele noi doar fac codul mai ușor de citit.

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> a = new ArrayList<>(List.of(2, 3));
        List<Integer> b = new ArrayList<>(List.of(2, 3));

        a.addFirst(1);
        a.addLast(4);
        b.add(0, 1);
        b.add(4);

        System.out.println(a + " " + b + " egale: " + a.equals(b));
    }
}

Rezultat

[1, 2, 3, 4] [1, 2, 3, 4] egale: true

Greșeli frecvente

  • Folosești addFirst într-o buclă mare pe un ArrayList. Fiecare apel mută tot conținutul; adaugă la sfârșit și inversează la final, sau folosește ArrayDeque.
  • Compilezi cu o versiune mai veche de Java 21: metoda nu există pe List (doar pe LinkedList și Deque).

Comenzi înrudite

  • List.add: Adaugă un element (sau toate elementele altei colecții) la sfârșitul listei ori la o poziție dată.
  • List.getFirst: Returnează primul sau ultimul element al listei; pe o listă goală aruncă NoSuchElementException.
  • List.removeFirst: Scoate și returnează primul sau ultimul element al listei; pe o listă goală aruncă NoSuchElementException.
  • List.reversed: Returnează o vedere a listei în ordine inversă; nu copiază elementele și urmărește modificările listei originale.
  • LinkedList: Listă dublu înlănțuită: adăugare și ștergere rapide la ambele capete; implementează și List, și Deque.
  • Deque.offerFirst: offerFirst adaugă un element la începutul unui Deque, offerLast la sfârșit. Returnează true dacă a reușit.