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