РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
399 of 1163 menu

Метод copyOf

Метод copyOf класса Map создает новую неизменяемую карту (unmodifiable map), содержащую все те же пары ключ-значение, что и исходная карта. В первый параметр мы передаем исходную карту, которую нужно скопировать. Метод возвращает новый объект, который не позволяет изменять свое содержимое: попытка добавить, удалить или изменить элемент приведет к исключению UnsupportedOperationException. Сама исходная карта при этом не изменяется. Если переданная карта уже является неизменяемой, метод может вернуть её же без создания новой копии.

Синтаксис

Map.copyOf(map)

Пример

Давайте создадим изменяемую карту и получим её неизменяемую копию:

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

Результат выполнения кода:

{a=1, b=2, c=3}

Пример

Давайте убедимся, что полученная копия является неизменяемой, и попробуем добавить в неё новый элемент:

import java.util.Map; import java.util.HashMap; public class Main { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("a", 1); map.put("b", 2); Map<String, Integer> res = Map.copyOf(map); try { res.put("c", 3); } catch (UnsupportedOperationException e) { System.out.println("Cannot modify copyOf map"); } } }

Результат выполнения кода:

"Cannot modify copyOf map"

Пример

Давайте проверим, что изменения в исходной карте после создания копии не влияют на саму копию:

import java.util.Map; import java.util.HashMap; public class Main { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("a", 1); map.put("b", 2); Map<String, Integer> res = Map.copyOf(map); map.put("c", 3); System.out.println("Original: " + map); System.out.println("Copy: " + res); } }

Результат выполнения кода:

"Original: {a=1, b=2, c=3}" "Copy: {a=1, b=2}"

Смотрите также

  • метод of,
    который создает неизменяемую карту из пар
  • метод ofEntries,
    который создает неизменяемую карту из записей
  • метод put,
    который добавляет пару в карту
  • метод entrySet,
    который возвращает множество записей карты
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить