V tej vadnici bomo s pomočjo primerov spoznali razred Java EnumSet in njegove različne metode.
EnumSet
Razred okviru Java zbirk zagotavlja določeno izvajanje elementov enotnega ENUM.
Preden se naučite o EnumSet, se prepričajte, da ste vedeli o Java Enumih.
Izvaja vmesnik Set.
Ustvarjanje EnumSet
Če želimo ustvariti enum enum, moramo najprej uvoziti java.util.EnumSet
paket.
V nasprotju z drugimi izvedbami niza enum nima javnih konstruktorjev. Za izdelavo nabora naštevanja moramo uporabiti vnaprej določene metode.
1. Uporaba allOf (Velikost)
allof()
Način ustvarja ENUM niz, ki vsebuje vse vrednosti določenega tipa enum velikosti. Na primer
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); ) )
Izhod
EnumSet: (SMALL, SREDNJI, VELIKI, EXTRALARGE)
Upoštevajte izjavo,
EnumSet sizes = EnumSet.allOf(Size.class);
Tu Size.class označuje Size enum, ki smo ga ustvarili.
2. Uporaba noneOf (Velikost)
noneOf()
Način ustvari prazno ENUM niz. Na primer
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); ) )
Izhod
Prazen EnumSet: ()
Tu smo ustvarili prazen enum z imenom velikosti.
Opomba : V zgornji program lahko vstavimo samo elemente enum tipa Size. To je zato, ker smo svoj prazen nabor nabora ustvarili z uporabo naštevanja velikosti.
3. Uporaba metode obsega (e1, e2)
range()
Način ustvarja niz ENUM, ki vsebuje vse vrednosti za ENUM med E1 in E2, vključno obeh vrednosti. Na primer
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); ) )
Izhod
EnumSet: (SREDNJA, VELIKA, IZVLJUČNA)
4. Uporaba metode ()
of()
Postopek ustvarja videz ENUM vsebuje določene elemente. Na primer
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); ) )
Izhod
EnumSet1: (SREDNJI) EnumSet2: (SMALL, LARGE)
Metode EnumSet
EnumSet
Razred določa metode, ki nam omogočajo, da opravljajo različne elemente niza oštevilčevanja.
Vstavite elemente v EnumSet
add()
- vnese določene vrednosti naštevanja v nabor naštevanjaaddAll()
vstavi vse elemente določene zbirke v nabor
Na primer
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); ) )
Izhod
EnumSet z uporabo add (): (MEDIUM) EnumSet z uporabo addAll (): (SMALL, MEDIUM, LARGE, EXTRALARGE)
V zgornjem primeru smo uporabili addAll()
metodo za vstavljanje vseh elementov nabora naštetih velikosti1 na nabor naštetih velikosti2.
Prav tako je mogoče v enum nabor uporabiti elemente iz drugih zbirk, kot ArrayList
so LinkedList
, itd addAll()
. Vse zbirke pa bi morale biti iste vrste enum.
Dostopite do elementov EnumSet
Za dostop do elementov nabora enum lahko uporabimo iterator()
metodo. Za uporabo te metode moramo java.util.Iterator
paket uvoziti . Na primer
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(", "); ) ) )
Izhod
EnumSet: SMALL, SREDNJI, VELIKI, EXTRALARGE,
Opomba :
hasNext()
vrne,true
če je v naboru enum naslednji elementnext()
vrne naslednji element v naboru enum
Odstranite elemente EnumSet
remove()
- odstrani navedeni element iz naboraremoveAll()
- odstrani vse elemente iz nabora
Na primer
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); ) )
Izhod
EnumSet: (SMALL, SREDNJI, VELIKI, EXTRALARGE) Ali je SREDNJI odstranjen? true Ali so vsi elementi odstranjeni? prav
Druge metode
Metoda | Opis |
---|---|
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
Zagotavlja učinkovit način za shranjevanje ENUM vrednote kot drugi set izvedbe (kot HashSet
, TreeSet
).
Enum set shranjuje samo vrednosti enum določenega enum. Zato JVM že pozna vse možne vrednosti nabora.
To je razlog, zakaj se nabori naštevanja interno izvajajo kot zaporedje bitov. Bits določa, ali so elementi v naboru naštevanja ali ne.
Bit ustreznega elementa je vklopljen, če je ta element prisoten v nizu.