Sobes.tech
Junior — Middle

Ako získať zoznam, ktorý nemožno zmeniť, na základe existujúceho ArrayList?

sobes.tech AI

Odpoveď od AI

Ak chcete získať nemenný (immutable) zoznam založený na existujúcom ArrayList v Jave, môžete použiť metódu Collections.unmodifiableList(). Táto metóda vracia obal nad pôvodným zoznamom, ktorý neumožňuje meniť obsah cez poskytnuté rozhranie.

Príklad:

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

ArrayList<String> meniteľnýZoznam = new ArrayList<>();
meniteľnýZoznam.add("Prvok 1");
meniteľnýZoznam.add("Prvok 2");

List<String> nemennýZoznam = Collections.unmodifiableList(meniteľnýZoznam);

// Pokus o zmenu nemenného zoznamu spôsobí UnsupportedOperationException
// nemennýZoznam.add("Nový prvok"); // Chyba!

Je dôležité si uvedomiť, že ak sa pôvodný meniteľnýZoznam zmení, zmeny budú viditeľné aj v nemennýZoznam, pretože ide len o obal. Ak je potrebná úplná nemennosť, treba vytvoriť kópiu zoznamu a obaliť ju:

List<String> úplneNemennýZoznam = Collections.unmodifiableList(new ArrayList<>(meniteľnýZoznam));