Java EnumSet

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

Die EnumSetKlasse des Java-Sammlungsframeworks bietet eine festgelegte Implementierung von Elementen einer einzelnen Aufzählung.

Bevor Sie sich mit EnumSet vertraut machen, sollten Sie sich mit Java Enums vertraut machen.

Es implementiert die Set-Schnittstelle.

EnumSet erstellen

Um einen Aufzählungssatz zu erstellen, müssen wir java.util.EnumSetzuerst das Paket importieren .

Im Gegensatz zu anderen Set-Implementierungen verfügt das Enum-Set nicht über öffentliche Konstruktoren. Wir müssen die vordefinierten Methoden verwenden, um eine Aufzählungsmenge zu erstellen.

1. Verwenden von allOf (Größe)

Die allof()Methode erstellt einen Aufzählungssatz, der alle Werte des angegebenen Aufzählungstyps Größe enthält. Beispielsweise,

 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 sizes = EnumSet.allOf(Size.class); System.out.println("EnumSet: " + sizes); ) ) 

Ausgabe

 EnumSet: (KLEIN, MITTEL, GROSS, EXTRALARGE) 

Beachten Sie die Aussage,

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

Hier bezeichnet Size.class die von uns erstellte Größenaufzählung.

2. Verwenden von noneOf (Größe)

Die noneOf()Methode erstellt einen leeren Aufzählungssatz. Beispielsweise,

 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 sizes = EnumSet.noneOf(Size.class); System.out.println("Empty EnumSet: " + sizes); ) ) 

Ausgabe

 Leeres EnumSet: () 

Hier haben wir eine leere Aufzählung mit dem Namen Größen erstellt.

Hinweis : Im obigen Programm können nur Elemente des Aufzählungstyps Größe eingefügt werden. Dies liegt daran, dass wir unseren leeren Aufzählungssatz mit der Größenaufzählung erstellt haben.

3. Verwenden Sie die Range (e1, e2) -Methode

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

 import java.util.EnumSet; class Main ( enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) public static void main(String() args) ( // Creating an EnumSet using range() EnumSet sizes = EnumSet.range(Size.MEDIUM, Size.EXTRALARGE); System.out.println("EnumSet: " + sizes); ) ) 

Ausgabe

 EnumSet: (MITTEL, GROSS, EXTRALARGE) 

4. Verwendung der () Methode

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

 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 sizes1 = EnumSet.of(Size.MEDIUM); System.out.println("EnumSet1: " + sizes1); EnumSet sizes2 = EnumSet.of(Size.SMALL, Size.LARGE); System.out.println("EnumSet2: " + sizes2); ) ) 

Ausgabe

 EnumSet1: (MITTEL) EnumSet2: (KLEIN, GROSS) 

Methoden von EnumSet

Die EnumSetKlasse bietet Methoden, mit denen wir verschiedene Elemente für die Aufzählungsmenge ausführen können.

Elemente in EnumSet einfügen

  • add() - fügt angegebene Aufzählungswerte in den Aufzählungssatz ein
  • addAll() Fügt alle Elemente der angegebenen Sammlung in die Menge ein

Beispielsweise,

 import java.util.EnumSet; class Main ( enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) public static void main(String() args) ( // Creating an EnumSet using allOf() EnumSet sizes1 = EnumSet.allOf(Size.class); // Creating an EnumSet using noneOf() EnumSet 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 mit add (): (MEDIUM) EnumSet mit addAll (): (SMALL, MEDIUM, LARGE, EXTRALARGE) 

Im obigen Beispiel haben wir die addAll()Methode verwendet, um alle Elemente einer Enum-Set-Größe1 in eine Enum-Set-Größe2 einzufügen.

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

Greifen Sie auf EnumSet-Elemente zu

Um auf Elemente eines Aufzählungssatzes zuzugreifen, können wir die iterator()Methode verwenden. Um diese Methode verwenden zu können, müssen wir das java.util.IteratorPaket importieren . Beispielsweise,

 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 sizes = EnumSet.allOf(Size.class); Iterator iterate = sizes.iterator(); System.out.print("EnumSet: "); while(iterate.hasNext()) ( System.out.print(iterate.next()); System.out.print(", "); ) ) ) 

Ausgabe

 EnumSet: KLEIN, MITTEL, GROSS, EXTRALARGE, 

Hinweis :

  • hasNext()Gibt zurück, truewenn das Enum-Set ein nächstes Element enthält
  • next() Gibt das nächste Element in der Aufzählung zurück

Entfernen Sie EnumSet-Elemente

  • remove() - Entfernt das angegebene Element aus dem Aufzählungssatz
  • removeAll() - Entfernt alle Elemente aus dem Aufzählungssatz

Beispielsweise,

 import java.util.EnumSet; class Main ( enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) public static void main(String() args) ( // Creating EnumSet using allOf() EnumSet 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) Wird MEDIUM entfernt? true Werden alle Elemente entfernt? wahr

Andere Methoden

Methode Beschreibung
copyOf() Creates a copy of the EnumSet
contains() Searches the EnumSet for the specified element and returns a boolean result
isEmpty() Checks if the EnumSet is empty
size() Returns the size of the EnumSet
clear() Removes all the elements from the EnumSet

Clonable and Serializable Interfaces

The EnumSet class also implements Cloneable and Serializable interfaces.

Cloneable Interface

It allows the EnumSet class to make a copy of instances of the class.

Serializable Interface

Whenever Java objects need to be transmitted over a network, objects need to be converted into bits or bytes. This is because Java objects cannot be transmitted over the network.

The Serializable interface allows classes to be serialized. This means objects of the classes implementing Serializable can be converted into bits or bytes.

Why EnumSet?

Das EnumSetstellt einen effizienten Weg ENUM - Werte als andere Set - Implementierungen zu speichern ( zum Beispiel HashSet, TreeSet).

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

Dies ist der Grund, warum Enum-Sets intern als eine Folge von Bits implementiert werden. Bits gibt an, ob Elemente in der Aufzählung vorhanden sind oder nicht.

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

Interessante Beiträge...