Найти тему
DEBAGanov

Java 900. Как получить коллекцию только для чтения?

В Java можно получить коллекцию только для чтения, чтобы предотвратить изменение ее содержимого. Вот несколько способов создания коллекции только для чтения:

  • Метод Collections.unmodifiableCollection():
List<String> list = new ArrayList<>();
list.add("элемент1");
list.add("элемент2");

Collection<String> readOnlyCollection = Collections.unmodifiableCollection(list);

  • Метод Collections.unmodifiableList() (для списков):
List<String> list = new ArrayList<>();
list.add("элемент1");
list.add("элемент2");

List<String> readOnlyList = Collections.unmodifiableList(list);

  • Метод Collections.unmodifiableSet() (для наборов):
Set<String> set = new HashSet<>();
set.add("элемент1");
set.add("элемент2");

Set<String> readOnlySet = Collections.unmodifiableSet(set);

  • Метод Collections.unmodifiableMap() (для карт):
Map<String, Integer> map = new HashMap<>();
map.put("ключ1", 1);
map.put("ключ2", 2);

Map<String, Integer> readOnlyMap = Collections.unmodifiableMap(map);

Созданные таким образом коллекции только для чтения будут выбрасывать исключение UnsupportedOperationException, если попытаться изменить их содержимое (например, добавить или удалить элементы).

Важно отметить, что коллекция только для чтения является неизменяемой в терминах структуры данных, но сама коллекция может содержать изменяемые элементы. Если элементы внутри коллекции могут быть изменены, то эти изменения будут отражаться в коллекции только для чтения. Если требуется полная иммутабельность, то необходимо использовать неизменяемые (immutable) коллекции, такие как ImmutableList, ImmutableSet и т.д. из библиотеки Google Guava или List.of(), Set.of() и т.д. из Java 9+.

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov