English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Как создать неизменяемые наборы в Java?

Каждый раз, когда нужно создать объект, который нельзя изменить после инициализации, можно определить неизменяемый объект. Нет конкретных правил для создания неизменяемых объектов, идея заключается в ограничении доступа к полю класса после инициализации.

Set - это интерфейс в наборе интерфейсов, который не позволяет повторяющиеся значения.

При создании неизменяемого набора данных следует помнить о以下几点:

  • Мы не должны иметь возможности добавлять или удалять элементы.

  • Мы не должны добавлять пустые значения в неизменяемый набор данных.

  • Как только был создан неизменяемый набор данных, к нему нельзя добавить или удалить объект, но можно изменить объекты, хранящиеся в нем.

Использование метода Of() в Java 9

Метод of() в Java 9 принимает список элементов, создает и возвращает неизменяемый набор данных для данных. Используя этот метод, вы можете создать неизменяемый набор данных с помощью Java.

import java.util.Set;
public class ImmutableSet {
   public static void main(String args[]) {
      Set<Integer> set = Set.of(1458, 5548, 4587);
      System.out.println(set);
   }
}

Использование метода unmodifiableSet()

Этот метод принимает объект собрания в качестве параметра и возвращает его неизменяемую форму.

Этот метод вызывается, передавая объект и получая его неизменяемую форму.

Пример

В следующем Java-программе мы создаем объект HashSet и пытаемся добавить элементы в него, преобразовав его в неизменяемый объект с помощью метода unmodifiableSet().

Поскольку мы установили его как неизменяемый, будет сгенерирован исключение во время выполнения.

import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
public class ImmutableSet {
   public static void main(String args[]) {
      Set<Integer> hashSet = new HashSet<Integer>();
      //Заполнение HashSet
      hashSet.add(1124);
      hashSet.add(3654);
      hashSet.add(7854);
      hashSet.add(9945);
      System.out.println(hashSet);
      //Преобразование объекта set в неизменяемый объект
      Set<Integer> immutable = Collections.unmodifiableSet(hashSet);
      immutable.add(4466);
   }
}

Результат вывода

[1124, 3654, 9945, 7854]
Exception in thread "main" java.lang.UnsupportedOperationException
   at java.util.Collections$UnmodifiableCollection.add(Unknown Source)
   at MyPackage.ImmutableSet.main(ImmutableSet.java:19)

Ты, возможно, понравится