Collection.addAll în Java

Adaugă în colecție toate elementele altei colecții. Returnează true dacă s-a schimbat ceva.

Sintaxă
boolean addAll(Collection<? extends E> c)

Ce face Collection.addAll

a.addAll(b) adaugă în a fiecare element din b, în ordinea în care îl dă b. Colecția b rămâne neschimbată.

Efectul depinde de tipul lui a: o listă primește toate elementele, inclusiv duplicatele; o mulțime le ignoră pe cele pe care le are deja. De aceea rezultatul (true/false) spune dacă a chiar s-a modificat.

Colecțiile pot fi de tipuri diferite: poți adăuga elementele unei mulțimi într-o listă sau ale unei liste într-o coadă.

Parametri

Parametru Descriere
c Colecția din care se copiază elementele.

Ce returnează

true dacă colecția s-a modificat.

Exemple

Exemplul 1: Unirea a două liste de invitați

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

public class Main {
    public static void main(String[] args) {
        List<String> mire = List.of("Ana", "Mihai", "Ioana");
        List<String> mireasa = List.of("Ioana", "Radu");

        List<String> toti = new ArrayList<>(mire);
        toti.addAll(mireasa);
        System.out.println("Listă: " + toti);

        TreeSet<String> unici = new TreeSet<>(mire);
        unici.addAll(mireasa);
        System.out.println("Mulțime: " + unici);
    }
}

Rezultat

Listă: [Ana, Mihai, Ioana, Ioana, Radu]
Mulțime: [Ana, Ioana, Mihai, Radu]

Exemplul 2: Rezultatul spune dacă s-a schimbat ceva

import java.util.List;
import java.util.TreeSet;

public class Main {
    public static void main(String[] args) {
        TreeSet<String> orase = new TreeSet<>(List.of("Iași", "Cluj"));
        System.out.println(orase.addAll(List.of("Cluj", "Iași")) + " " + orase);
        System.out.println(orase.addAll(List.of("Cluj", "Arad")) + " " + orase);
    }
}

Rezultat

false [Cluj, Iași]
true [Arad, Cluj, Iași]

Greșeli frecvente

  • Adaugi o colecție în ea însăși (lista.addAll(lista)) sau într-o colecție nemodificabilă. Al doilea caz aruncă UnsupportedOperationException.
  • Crezi că addAll returnează colecția nouă. Returnează un boolean; colecția inițială este cea modificată.

Comenzi înrudite

  • List.add: Adaugă un element (sau toate elementele altei colecții) la sfârșitul listei ori la o poziție dată.
  • Set.add: Adaugă un element în mulțime doar dacă nu există deja; returnează true dacă a fost adăugat. addAll face reuniunea.
  • Collections.addAll: Adaugă dintr-o dată mai multe valori (sau un array) într-o colecție existentă. Returnează true dacă s-a schimbat.
  • Collection.retainAll: retainAll păstrează doar elementele care apar și în altă colecție; containsAll verifică dacă le conține pe toate.