În acest tutorial, vom afla despre clasa Java EnumSet și diferitele sale metode cu ajutorul unor exemple.
EnumSet
Clasa cadrului colecțiilor Java oferă o implementare set de elemente ale unui singur enum.
Înainte de a afla despre EnumSet, asigurați-vă că știți despre Java Enums.
Implementează interfața Set.
Crearea EnumSet
Pentru a crea un set de enumeri, trebuie mai java.util.EnumSet
întâi să importăm pachetul.
Spre deosebire de alte implementări de seturi, setul enum nu are constructori publici. Trebuie să folosim metodele predefinite pentru a crea un set de enumeri.
1. Utilizarea allOf (Dimensiune)
allof()
Metoda creează un set enum care conține toate valorile specificate Dimensiunea de tip enum. De exemplu,
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); ) )
Ieșire
EnumSet: (MIC, MEDIU, MARE, EXTRALARGE)
Observați declarația,
EnumSet sizes = EnumSet.allOf(Size.class);
Aici, Size.class reprezintă denumirea Size pe care am creat-o.
2. Utilizarea noneOf (Dimensiune)
noneOf()
Metoda creează un set enum gol. De exemplu,
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); ) )
Ieșire
EnumSet gol: ()
Aici, am creat o enumere goală numită dimensiuni.
Notă : Putem insera numai elemente de tip enum Size în programul de mai sus. Este pentru că ne-am creat setul de enumere gol folosind Size enum.
3. Folosind metoda intervalului (e1, e2)
range()
Metoda creează un set enum care conține toate valorile unui enum între e1 și e2 , inclusiv ambele valori. De exemplu,
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); ) )
Ieșire
EnumSet: (MEDIU, MARE, EXTRALARGE)
4. Folosirea metodei ()
of()
Metoda creează un set enum care conține elementele specificate. De exemplu,
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); ) )
Ieșire
EnumSet1: (MEDIUM) EnumSet2: (MIC, MARE)
Metode de EnumSet
EnumSet
Clasa prevede metode care ne permit de a efectua diverse elemente pe platourile de filmare enum.
Introduceți elemente în EnumSet
add()
- inserează valorile enum specificate în setul de enumereaddAll()
introduce toate elementele colecției specificate în set
De exemplu,
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); ) )
Ieșire
EnumSet folosind add (): (MEDIUM) EnumSet folosind addAll (): (MIC, MEDIU, MARE, EXTRALARGE)
În exemplul de mai sus, am folosit addAll()
metoda pentru a insera toate elementele unui set de mărimi enumere1 într-un set de mărimi enumerate2.
Este de asemenea posibil pentru a insera elemente din alte colecții , cum ar fi ArrayList
, LinkedList
etc la un set enum folosind addAll()
. Cu toate acestea, toate colecțiile ar trebui să fie de același tip enum.
Accesați elementele EnumSet
Pentru a accesa elementele unui set de enumeri, putem folosi iterator()
metoda. Pentru a utiliza această metodă, trebuie să importăm java.util.Iterator
pachetul. De exemplu,
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(", "); ) ) )
Ieșire
EnumSet: MIC, MEDIU, MARE, EXTRALARGE,
Notă :
hasNext()
revinetrue
dacă există un element următor în setul de enumerenext()
returnează următorul element din setul de enumere
Eliminați EnumSet Elements
remove()
- elimină elementul specificat din setul de enumereremoveAll()
- elimină toate elementele din setul de enumere
De exemplu,
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); ) )
Ieșire
EnumSet: (MIC, MEDIU, MARE, EXTRALARGE) Este MEDIUM eliminat? adevărat Sunt eliminate toate elementele? Adevărat
Alte metode
Metodă | Descriere |
---|---|
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?
EnumSet
Oferă o modalitate eficientă de a stoca valori ENUM decât alte implementări stabilite (cum ar fi HashSet
, TreeSet
).
Un set enum stochează numai valorile enum ale unui enum specific. Prin urmare, JVM cunoaște deja toate valorile posibile ale setului.
Acesta este motivul pentru care seturile enum sunt implementate intern ca o secvență de biți. Bits specifică dacă elementele sunt prezente sau nu în setul de enumeri.
Bitul unui element corespunzător este activat dacă acel element este prezent în set.