List.get în Java

get citește elementul de la o poziție; set îl înlocuiește și returnează valoarea veche.

Sintaxă
E get(int index)
E set(int index, E element)

Ce face List.get

get(i) returnează elementul de la poziția i, fără să schimbe lista. Pozițiile încep de la 0, deci ultimul element este get(size() - 1). set(i, x) pune x în locul elementului de la poziția i (lungimea listei rămâne aceeași) și returnează elementul vechi.

Indexul trebuie să fie între 0 și size() - 1. Altfel apare IndexOutOfBoundsException. Pe ArrayList ambele metode sunt foarte rapide; pe LinkedList trebuie parcurse nodurile până la poziție.

Parametri

Parametru Descriere
index Poziția elementului, de la 0 la size() - 1.
element Pentru set: noua valoare.

Ce returnează

get: elementul de la poziție. set: elementul care era înainte la acea poziție.

Exemple

Exemplul 1: Citire după poziție

import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> luni = List.of("ianuarie", "februarie", "martie", "aprilie");
        System.out.println("Prima lună: " + luni.get(0));
        System.out.println("A treia lună: " + luni.get(2));
        System.out.println("Ultima din listă: " + luni.get(luni.size() - 1));

        for (int i = 0; i < luni.size(); i++) {
            System.out.println((i + 1) + ". " + luni.get(i));
        }
    }
}

Rezultat

Prima lună: ianuarie
A treia lună: martie
Ultima din listă: aprilie
1. ianuarie
2. februarie
3. martie
4. aprilie

Exemplul 2: Corectarea unei note cu set

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

public class Main {
    public static void main(String[] args) {
        List<Integer> note = new ArrayList<>(List.of(7, 5, 9));
        int veche = note.set(1, 8);
        System.out.println("Nota " + veche + " a fost corectată: " + note);

        for (int i = 0; i < note.size(); i++) {
            note.set(i, note.get(i) + 1);      // un punct bonus fiecăruia
        }
        System.out.println("Cu bonus: " + note);
    }
}

Rezultat

Nota 5 a fost corectată: [7, 8, 9]
Cu bonus: [8, 9, 10]

Exemplul 3: Index în afara listei

import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> elevi = List.of("Ana", "Mihai");
        try {
            System.out.println(elevi.get(2));
        } catch (IndexOutOfBoundsException e) {
            System.out.println("Nu există: " + e.getMessage());
        }
    }
}

Rezultat

Nu există: Index: 2 Size: 2

Greșeli frecvente

  • Scrii lista.get(lista.size()) pentru ultimul element. Ultima poziție este size() - 1; poți folosi și getLast() (Java 21).
  • Folosești set pe o poziție care încă nu există, ca să „adaugi”. set doar înlocuiește; pentru adăugare folosește add.
  • Pe List<Integer> compari rezultatul lui get cu ==: a.get(0) == b.get(0) compară obiecte și poate da false pentru numere mai mari de 127. Folosește equals.

Comenzi înrudite

  • List.getFirst: Returnează primul sau ultimul element al listei; pe o listă goală aruncă NoSuchElementException.
  • List.indexOf: Returnează poziția primei (indexOf) sau ultimei (lastIndexOf) apariții a unei valori, ori -1 dacă lipsește.
  • List.add: Adaugă un element (sau toate elementele altei colecții) la sfârșitul listei ori la o poziție dată.
  • List.size: size spune câte elemente are lista, isEmpty verifică dacă e goală, iar clear șterge toate elementele.
  • List.replaceAll: Înlocuiește fiecare element al listei cu rezultatul unei funcții aplicate pe el, pe loc.