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

Wie erstellt man in Java unveränderliche Mengen?

Man kann unveränderliche Objekte definieren, wenn ein Objekt erstellt werden soll, das nach der Initialisierung nicht geändert werden kann. Es gibt keine spezifischen Regeln für die Erstellung unveränderlicher Objekte, sondern die Idee ist, den Zugriff auf die Felder der Klasse nach der Initialisierung zu beschränken.

Set ist eine Schnittstelle im Sammlungsrahmen und erlaubt keine wiederholten Werte.

Bei der Erstellung unveränderlicher Sammlungen sollten Sie sich daran erinnern, folgendes zu beachten:

  • Wir sollten nicht in der Lage sein, Elemente hinzuzufügen oder zu entfernen.

  • Wir sollten keine leeren Werte in unveränderliche Sammlungen hinzufügen.

  • Sobald eine unveränderliche Sammlung erstellt wurde, können keine Objekte hinzugefügt oder entfernt werden, aber die in ihr gespeicherten Objekte können geändert werden.

Mit Java9Die Of()-Methode

Java9Die of()-Methode akzeptiert eine Liste von Elementen, erstellt und gibt eine unveränderliche Sammlung der angegebenen Elemente zurück. Mit dieser Methode können Sie in Java unveränderliche Sammlungen erstellen.

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

Verwenden Sie die Methode unmodifiableSet()

Diese Methode akzeptiert ein Sammlungsobjekt als Parameter und gibt sein unveränderliches, d.h. nicht veränderliches, Form zurück.

Rufen Sie diese Methode auf, indem Sie das erforderliche Objekt übergeben und dessen unveränderliche Form erhalten.

Beispiel

Im folgenden Java-Programm erstellen wir ein HashSet-Objekt und konvertieren es mit der Methode unmodifiableSet() in ein unveränderliches Objekt und versuchen, Elemente hinzuzufügen.

Da wir es als unveränderlich gesetzt haben, wird eine Laufzeitexception generiert.

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 füllen
      hashSet.add(1124);
      hashSet.add(3654);
      hashSet.add(7854);
      hashSet.add(9945);
      System.out.println(hashSet);
      //Set-Objekt in ein unveränderliches Objekt umwandeln
      Set immutable = Collections.unmodifiableSet(hashSet);
      immutable.add(4466);
   }
}

Ausgaberesultat

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