Java EnumSet

În acest tutorial, vom afla despre clasa Java EnumSet și diferitele sale metode cu ajutorul unor exemple.

EnumSetClasa 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

EnumSetClasa 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 enumere
  • addAll() 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, LinkedListetc 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.Iteratorpachetul. 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()revine truedacă există un element următor în setul de enumere
  • next() returnează următorul element din setul de enumere

Eliminați EnumSet Elements

  • remove() - elimină elementul specificat din setul de enumere
  • removeAll() - 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?

EnumSetOferă 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.

Articole interesante...