Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpCoIm 215 of 322 menu
◀ ▶

Неизменяемые фабрики коллекций в Java

С Java 9 методы List.of, Set.of и Map.of возвращают компактные неизменяемые коллекции. Любая попытка add, remove или put завершится исключением UnsupportedOperationException.

Такие коллекции удобно отдавать наружу из метода: вызывающий код видит фиксированный набор данных и не ломает внутреннее состояние программы.

Небольшой набор констант и карта настроек:

import java.util.List; import java.util.Map; import java.util.Set; public class Main { public static void main(String[] args) { List<String> roles = List.of("guest", "user", "admin"); Set<Integer> ports = Set.of(80, 443); Map<String, Integer> limits = Map.of("free", 10, "pro", 100); System.out.println(roles.size()); System.out.println(ports.contains(443)); System.out.println(limits.get("pro")); } }

У Map.of есть ограничение: не больше десяти пар в одном вызове. Больше пар собирают через Map.ofEntries или копию из изменяемой карты методом Map.copyOf (Java 10):

import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, Integer> draft = new HashMap<>(); draft.put("a", 1); draft.put("b", 2); Map<String, Integer> frozen = Map.copyOf(draft); System.out.println(frozen); } }

List.copyOf и Set.copyOf работают так же: если исходная коллекция уже неизменяемая, может вернуться тот же экземпляр без лишнего копирования.

Создайте неизменяемый список из трех городов и проверьте, что add приводит к исключению (поймайте его или опишите ожидаемый тип в комментарии).

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить