Метод copyOf
Метод copyOf создает и возвращает
неизменяемую копию переданной коллекции.
В первый параметр мы передаем коллекцию,
которую необходимо скопировать. Метод
возвращает список, содержащий все элементы
исходной коллекции в том же порядке.
Если переданная коллекция равна null,
метод выбрасывает исключение NullPointerException.
Синтаксис
List.copyOf(collection)
Пример
Давайте создадим неизменяемую копию списка:
import java.util.List;
public class Main
{
public static void main(String[] args)
{
List<String> original = List.of("a", "b", "c", "d", "e");
List<String> copy = List.copyOf(original);
System.out.println(copy);
}
}
Результат выполнения кода:
[a, b, c, d, e]
Пример
Давайте попробуем изменить скопированный список:
import java.util.List;
public class Main
{
public static void main(String[] args)
{
List<String> original = List.of("a", "b", "c");
List<String> copy = List.copyOf(original);
try
{
copy.add("d");
}
catch (UnsupportedOperationException e)
{
System.out.println("List is immutable");
}
}
}
Результат выполнения кода:
"List is immutable"
Пример
Давайте скопируем список чисел и проверим, что копия не зависит от исходного списка:
import java.util.ArrayList;
import java.util.List;
public class Main
{
public static void main(String[] args)
{
List<Integer> original = new ArrayList<>(List.of(1, 2, 3, 4, 5));
List<Integer> copy = List.copyOf(original);
original.add(6);
System.out.println("Original: " + original);
System.out.println("Copy: " + copy);
}
}
Результат выполнения кода:
Original: [1, 2, 3, 4, 5, 6]
Copy: [1, 2, 3, 4, 5]