Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java-EnumSet

Java-EnumSet

In diesem Tutorial lernen wir anhand von Beispielen die Java-Klasse EnumSet und ihre verschiedenen Methoden kennen.

Der EnumSet Klasse des Java Collections Framework stellt eine Set-Implementierung von Elementen einer einzelnen Aufzählung bereit.

Bevor Sie etwas über EnumSet lernen, sollten Sie sich unbedingt mit Java Enums auskennen.

Es implementiert die Set-Schnittstelle.


EnumSet erstellen

Um ein Enum-Set zu erstellen, müssen wir den java.util.EnumSet importieren Paket zuerst.

Im Gegensatz zu anderen Set-Implementierungen hat das Enum-Set keine öffentlichen Konstruktoren. Wir müssen die vordefinierten Methoden verwenden, um einen Aufzählungssatz zu erstellen.

1. Verwendung von allOf(Size)

Die allof() -Methode erstellt einen Aufzählungssatz, der alle Werte des angegebenen Aufzählungstyps Size enthält . Zum Beispiel

import java.util.EnumSet;

class Main {
    // an enum named Size
    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }
    
    public static void main(String[] args) {

        // Creating an EnumSet using allOf()
        EnumSet<Size> sizes = EnumSet.allOf(Size.class);

        System.out.println("EnumSet: " + sizes);
    }

}

Ausgabe

EnumSet: [SMALL, MEDIUM, LARGE, EXTRALARGE]

Beachten Sie die Anweisung,

EnumSet<Size> sizes = EnumSet.allOf(Size.class);

Hier, Size.class bezeichnet die Größe enum, die wir erstellt haben.


2. noneOf(Size) verwenden

Die noneOf() -Methode erstellt einen leeren Aufzählungssatz. Zum Beispiel

import java.util.EnumSet;

class Main {

     // an enum type Size
    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Creating an EnumSet using noneOf()
        EnumSet<Size> sizes = EnumSet.noneOf(Size.class);

        System.out.println("Empty EnumSet: " + sizes);
    }
}

Ausgabe

Empty EnumSet : []

Hier haben wir eine leere Aufzählung namens sizes erstellt .

Hinweis :Wir können nur Elemente vom Aufzählungstyp Size einfügen im obigen Programm. Das liegt daran, dass wir unser leeres Enum-Set mit Size erstellt haben Aufzählung.


3. Verwendung der Methode range(e1, e2)

Die range() -Methode erstellt einen Aufzählungssatz, der alle Werte einer Aufzählung zwischen e1 enthält und e2 einschließlich beider Werte. Zum Beispiel

import java.util.EnumSet;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Creating an EnumSet using range()
        EnumSet<Size> sizes = EnumSet.range(Size.MEDIUM, Size.EXTRALARGE);

        System.out.println("EnumSet: " + sizes);
    }
}

Ausgabe

EnumSet: [MEDIUM, LARGE, EXTRALARGE]

4. Verwendung der Methode ()

Die of() -Methode erstellt einen Aufzählungssatz, der die angegebenen Elemente enthält. Zum Beispiel

import java.util.EnumSet;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Using of() with a single parameter
        EnumSet<Size> sizes1 = EnumSet.of(Size.MEDIUM);
        System.out.println("EnumSet1: " + sizes1);

        EnumSet<Size> sizes2 = EnumSet.of(Size.SMALL, Size.LARGE);
        System.out.println("EnumSet2: " + sizes2);
    }
}

Ausgabe

EnumSet1: [MEDIUM]
EnumSet2: [SMALL, LARGE]

Methoden von EnumSet

Die EnumSet Die Klasse stellt Methoden bereit, mit denen wir verschiedene Elemente auf dem Enum-Set ausführen können.


Elemente in EnumSet einfügen

Zum Beispiel

import java.util.EnumSet;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Creating an EnumSet using allOf()
        EnumSet<Size> sizes1 = EnumSet.allOf(Size.class);

        // Creating an EnumSet using noneOf()
        EnumSet<Size> sizes2 = EnumSet.noneOf(Size.class);

        // Using add method
        sizes2.add(Size.MEDIUM);
        System.out.println("EnumSet Using add(): " + sizes2);

        // Using addAll() method
        sizes2.addAll(sizes1);
        System.out.println("EnumSet Using addAll(): " + sizes2);
    }
}

Ausgabe

EnumSet using add(): [MEDIUM]
EnumSet using addAll(): [SMALL, MEDIUM, LARGE, EXTRALARGE]

Im obigen Beispiel haben wir den addAll() verwendet Methode zum Einfügen aller Elemente eines Aufzählungssatzes sizes1 zu einem Aufzählungssatz sizes2 .

Es ist auch möglich, Elemente aus anderen Sammlungen wie ArrayList einzufügen , LinkedList , etc. zu einem Enum-Set mit addAll() . Alle Sammlungen sollten jedoch vom gleichen Aufzählungstyp sein.


Zugriff auf EnumSet-Elemente

Um auf Elemente eines Enum-Sets zuzugreifen, können wir den iterator() verwenden Methode. Um diese Methode zu verwenden, müssen wir den java.util.Iterator importieren Paket. Zum Beispiel

import java.util.EnumSet;
import java.util.Iterator;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Creating an EnumSet using allOf()
        EnumSet<Size> sizes = EnumSet.allOf(Size.class);

        Iterator<Size> iterate = sizes.iterator();

        System.out.print("EnumSet: ");
        while(iterate.hasNext()) {
            System.out.print(iterate.next());
            System.out.print(", ");
        }
    }
}

Ausgabe

EnumSet: SMALL, MEDIUM, LARGE, EXTRALARGE,

Hinweis :


EnumSet-Elemente entfernen

Zum Beispiel

import java.util.EnumSet;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Creating EnumSet using allOf()
        EnumSet<Size> sizes = EnumSet.allOf(Size.class);
        System.out.println("EnumSet: " + sizes);

        // Using remove()
        boolean value1 = sizes.remove(Size.MEDIUM);
        System.out.println("Is MEDIUM removed? " + value1);

        // Using removeAll()
        boolean value2 = sizes.removeAll(sizes);
        System.out.println("Are all elements removed? " + value2);
    }
}

Ausgabe

EnumSet: [SMALL, MEDIUM, LARGE, EXTRALARGE]
Is MEDIUM removed? true
Are all elements removed? true

Andere Methoden

zurück
Methode Beschreibung
copyOf() Erzeugt eine Kopie von EnumSet
contains() Sucht den EnumSet für das angegebene Element und gibt ein boolesches Ergebnis
isEmpty() Überprüft, ob der EnumSet ist leer
size() Gibt die Größe von EnumSet zurück
clear() Entfernt alle Elemente aus EnumSet

Klonbare und serialisierbare Schnittstellen

Der EnumSet Klasse implementiert auch Cloneable und Serializable Schnittstellen.

Klonbare Oberfläche

Es erlaubt den EnumSet Klasse, um eine Kopie von Instanzen der Klasse zu erstellen.

Serialisierbare Schnittstelle

Wann immer Java-Objekte über ein Netzwerk übertragen werden müssen, müssen Objekte in Bits oder Bytes umgewandelt werden. Dies liegt daran, dass Java-Objekte nicht über das Netzwerk übertragen werden können.

Der Serializable -Schnittstelle ermöglicht die Serialisierung von Klassen. Damit sind Objekte der Klassen gemeint, die Serializable implementieren kann in Bits oder Bytes umgewandelt werden.


Warum EnumSet?

Der EnumSet bietet eine effizientere Möglichkeit zum Speichern von Enum-Werten als andere Set-Implementierungen (wie HashSet , TreeSet ).

Ein Aufzählungssatz speichert nur Aufzählungswerte einer bestimmten Aufzählung. Daher kennt die JVM bereits alle möglichen Werte des Satzes.

Aus diesem Grund werden Enum-Sets intern als Folge von Bits implementiert. Bits gibt an, ob Elemente im Enum-Set vorhanden sind oder nicht.

Das Bit eines entsprechenden Elements wird eingeschaltet, wenn dieses Element in der Menge vorhanden ist.


Java

  1. Java-Operatoren
  2. Java-Kommentare
  3. Java for-each-Schleife
  4. Java-Strings
  5. Anonyme Java-Klasse
  6. Java-Enumerationen
  7. Java-Enum-Konstruktor
  8. Java-Versuch-mit-Ressourcen
  9. Java-Anmerkungen
  10. Java-Assertionen