Collections.unmodifiableList()
Возвращает представление списка, которое нельзя изменить.
Доступно с: Java 1.2
Синтаксис
static <T> List<T> unmodifiableList(List<? extends T> list)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| list | List<? extends T> | Список, который нужно закрыть от изменений. |
Возвращаемое значение
List<T>Представление только для чтения.
Примеры
Изменять через обёртку нельзя, но изменения оригинала видны:
void main() {
List<String> source = new ArrayList<>(List.of("a", "b"));
List<String> readOnly = Collections.unmodifiableList(source);
try {
readOnly.add("c");
} catch (UnsupportedOperationException e) {
IO.println("read-only");
}
source.add("c");
IO.println(readOnly);
}Результат:
read-only
[a, b, c]Примечания
Это не копия, а «окно» только для чтения: исходный список по-прежнему можно менять, и изменения видны через обёртку. Если нужна независимая неизменяемая копия, используйте List.copyOf(). Аналоги для других коллекций: unmodifiableSet(), unmodifiableMap().
См. также
- List.copyOf() — Создаёт неизменяемую копию коллекции в виде списка.
- List.of() — Создаёт неизменяемый список из перечисленных элементов.
- UnsupportedOperationException — Возникает при вызове операции, которую объект не поддерживает, — например, изменение неизменяемой коллекции.
Вопросы и ответы по теме
В учебнике
- Вспомогательные методы коллекций — Класс Collections и полезные методы Java: max, min, frequency, reverse, shuffle, nCopies, неизменяемые копии и представления, Arrays.asList.