Метод unmodifiableList
Метод unmodifiableList класса Collections
возвращает неизменяемое представление переданного списка.
В первый параметр мы передаем исходный список, который
нужно защитить от изменений. Любая попытка изменить
полученный список (добавить, удалить или заменить элемент)
приведет к исключению UnsupportedOperationException.
При этом сам исходный список остается изменяемым, и все
изменения в нем отражаются в неизменяемом представлении.
Синтаксис
Collections.unmodifiableList(list)
Пример
Давайте создадим неизменяемый список и попробуем добавить в него элемент:
import java.util.*;
public class Main
{
public static void main(String[] args)
{
List<String> list = new ArrayList<>(List.of("a", "b", "c", "d", "e"));
List<String> res = Collections.unmodifiableList(list);
System.out.println(res);
res.add("f");
}
}
Результат выполнения кода:
[a, b, c, d, e]
Exception in thread "main" java.lang.UnsupportedOperationException
Пример
Давайте изменим исходный список и посмотрим, как это отразится на неизменяемом представлении:
import java.util.*;
public class Main
{
public static void main(String[] args)
{
List<Integer> list = new ArrayList<>(List.of(1, 2, 3, 4, 5));
List<Integer> res = Collections.unmodifiableList(list);
list.add(6);
System.out.println(res);
}
}
Результат выполнения кода:
[1, 2, 3, 4, 5, 6]
Пример
Давайте попробуем удалить элемент из неизменяемого списка:
import java.util.*;
public class Main
{
public static void main(String[] args)
{
List<String> list = new ArrayList<>(List.of("a", "b", "c", "d", "e"));
List<String> res = Collections.unmodifiableList(list);
res.remove(0);
}
}
Результат выполнения кода:
Exception in thread "main" java.lang.UnsupportedOperationException
Смотрите также
-
класс
Collections,
который содержит методы для работы с коллекциями -
метод
synchronizedList,
который создает потокобезопасный список -
метод
singletonList,
который создает список из одного элемента -
метод
emptyList,
который возвращает пустой неизменяемый список