Java EnumSet

V tej vadnici bomo s pomočjo primerov spoznali razred Java EnumSet in njegove različne metode.

EnumSetRazred 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.EnumSetpaket.

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

EnumSetRazred 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števanja
  • addAll() 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 ArrayListso 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.Iteratorpaket 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 element
  • next() vrne naslednji element v naboru enum

Odstranite elemente EnumSet

  • remove() - odstrani navedeni element iz nabora
  • removeAll() - 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?

EnumSetZagotavlja 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.

Zanimive Članki...