In diesem Tutorial lernen wir anhand von Beispielen die Java EnumSet-Klasse und ihre verschiedenen Methoden kennen.
Die EnumSet
Klasse 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.EnumSet
zuerst 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 EnumSet
Klasse 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 einaddAll()
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
, LinkedList
etc. 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.Iterator
Paket 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,true
wenn das Enum-Set ein nächstes Element enthältnext()
Gibt das nächste Element in der Aufzählung zurück
Entfernen Sie EnumSet-Elemente
remove()
- Entfernt das angegebene Element aus dem AufzählungssatzremoveAll()
- 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 EnumSet
stellt 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.