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

Come creare un set immutabile in Java

Ogni volta che è necessario creare un oggetto che non può essere modificato dopo l'inizializzazione, si può definire un oggetto immutabile. Non ci sono regole specifiche per la creazione di oggetti immutabili, l'idea è limitare l'accesso ai campi della classe dopo l'inizializzazione.

Set è un'interfaccia della raccolta della struttura, che non permette valori ripetuti.

Creando una raccolta immutabile, è necessario ricordare i seguenti punti:

  • Non dovremmo essere in grado di aggiungere o rimuovere elementi.

  • Non dovremmo essere in grado di aggiungere valori vuoti a una raccolta immutabile.

  • Una volta creato un set immutabile, non è possibile aggiungere o rimuovere oggetti, ma è possibile modificare gli oggetti memorizzati al suo interno.

Utilizzo del metodo Of() di Java 9

Il metodo of() di Java 9 accetta una lista di elementi, crea e restituisce una raccolta immutabile dei dati forniti. Utilizzando questo metodo, è possibile creare raccolte immutabili in 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);
   }
}

Utilizzo del metodo unmodifiableSet()

Questo metodo accetta un oggetto di raccolta come parametro e restituisce la sua forma non modificabile, ovvero immutabile.

Questo metodo può essere chiamato passando l'oggetto necessario e ricevendo la sua forma immutabile.

Esempio

Nel seguente programma Java, abbiamo creato un oggetto HashSet e l'abbiamo convertito in un oggetto immutabile utilizzando il metodo unmodifiableSet() e abbiamo tentato di aggiungere elementi a esso.

因为我们将其设置为不可变的,所以将生成运行时异常。

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 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)