Junior — Middle
Как може да се получи списък, който не може да бъде променен, въз основа на съществуващ ArrayList?
sobes.tech AI
Отговор от AI
За да получите неизменяем (immutable) списък, базиран на съществуващ ArrayList в Java, можете да използвате метода Collections.unmodifiableList(). Този метод връща обвивка около оригиналния списък, която не позволява да се променя съдържанието чрез предоставения интерфейс.
Пример:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
ArrayList<String> променливСписък = new ArrayList<>();
променливСписък.add("Елемент 1");
променливСписък.add("Елемент 2");
List<String> неизменяемСписък = Collections.unmodifiableList(променливСписък);
// Опит за промяна на неизменяемия списък ще предизвика UnsupportedOperationException
// неизменяемСписък.add("Нов елемент"); // Грешка!
Важно е да се помни, че ако оригиналният променливСписък се промени, промените ще бъдат видими и в неизменяемСписък, тъй като това е само обвивка. Ако е необходима пълна неизменяемост, трябва да създадете копие на списъка и да го обвиете:
List<String> напълноНеизменяемСписък = Collections.unmodifiableList(new ArrayList<>(променливСписък));