Неизменяемое копирование коллекций
Создание неизменяемой копии любой коллекции одним вызовом.
Сравнение кода
✕ Java 8
List<String> copy =
Collections.unmodifiableList(
new ArrayList<>(original)
);
✓ Java 10+
List<String> copy =
List.copyOf(original);
Заметили проблему в этом коде? Сообщите нам.
Почему современный подход лучше
Умное копирование
Копирование пропускается, если источник уже неизменяем.
Один вызов
Без ручного создания ArrayList и обёртывания.
Любая коллекция
Принимает любую Collection на входе — без промежуточного преобразования в ArrayList.
Старый подход
Ручное копирование + обёртка
Современный подход
List.copyOf()
Начиная с JDK
10
Сложность
Начинающий
Поддержка JDK
Неизменяемое копирование коллекций
Доступно
Широко доступно начиная с JDK 10 (март 2018)
Как это работает
List.copyOf(), Set.copyOf() и Map.copyOf() создают неизменяемые снимки существующих коллекций. Если источник уже является неизменяемой коллекцией, копия не создаётся.
Связанная документация
Доказательство