List.replaceAll în Java

Înlocuiește fiecare element al listei cu rezultatul unei funcții aplicate pe el, pe loc.

Sintaxă
default void replaceAll(UnaryOperator<E> operator)

Ce face List.replaceAll

replaceAll(f) parcurge lista și pune în locul fiecărui element x valoarea f(x). Este echivalentul scurt al unei bucle cu set(i, f(get(i))). Lista rămâne cu aceeași lungime, iar tipul elementelor nu se poate schimba (funcția primește un E și returnează un E).

Dacă vrei o listă nouă, eventual cu alt tip de elemente (de exemplu din String în Integer), folosește stream().map(...).toList().

Parametri

Parametru Descriere
operator Funcția aplicată fiecărui element, de obicei un lambda: x -> x * 2.

Ce returnează

Nimic: lista se modifică pe loc.

Exemple

Exemplul 1: Scumpirea tuturor prețurilor cu 10%

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

public class Main {
    public static void main(String[] args) {
        List<Double> preturi = new ArrayList<>(List.of(10.0, 25.0, 4.5));
        preturi.replaceAll(p -> Math.round(p * 1.10 * 100) / 100.0);
        System.out.println("Prețuri noi: " + preturi);
    }
}

Rezultat

Prețuri noi: [11.0, 27.5, 4.95]

Exemplul 2: Normalizarea numelor

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

public class Main {
    public static void main(String[] args) {
        List<String> nume = new ArrayList<>(List.of("  ana ", "MIHAI", "ioana  "));
        nume.replaceAll(String::strip);
        nume.replaceAll(s -> s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase());
        System.out.println(nume);
    }
}

Rezultat

[Ana, Mihai, Ioana]

Greșeli frecvente

  • Încerci să schimbi tipul: List<String> nu poate deveni List<Integer> cu replaceAll. Folosește un stream.
  • Apelezi replaceAll pe o listă de la List.of: aruncă UnsupportedOperationException.
  • Confunzi List.replaceAll cu String.replaceAll, care înlocuiește text după o expresie regulată.

Comenzi înrudite

  • List.get: get citește elementul de la o poziție; set îl înlocuiește și returnează valoarea veche.
  • Map.replace: replace schimbă valoarea unei chei doar dacă cheia există; replaceAll recalculează toate valorile cu o funcție.
  • Collection.stream: Creează un Stream peste elementele colecției, ca să le filtrezi, transformi, sortezi sau aduni într-un rezultat.
  • Collection.removeIf: Șterge din colecție toate elementele pentru care condiția dată este adevărată. Returnează true dacă s-a șters ceva.