В 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