Java EnumSet

Šajā apmācībā mēs ar piemēru palīdzību uzzināsim par Java EnumSet klasi un tās dažādajām metodēm.

EnumSetJava kolekcijas ietvaros klase nodrošina noteiktu ieviešanu elementu vienas enum.

Pirms uzzināt par EnumSet, noteikti uzziniet par Java Enums.

Tas īsteno iestatīšanas saskarni.

Izveido EnumSet

Lai izveidotu uzskaites kopu, mums vispirms ir jāimportē java.util.EnumSetpakete.

Atšķirībā no citām kopu realizācijām, enum kopai nav publisku konstruktoru. Lai izveidotu uzskaites kopu, mums jāizmanto iepriekš noteiktās metodes.

1. AllOf (izmērs) izmantošana

allof()Metode rada enum kopa, kas satur visas vērtības norādīto enum tipa lielums. Piemēram,

 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); ) ) 

Rezultāts

 EnumSet: (MAZS, VIDĒJS, LIELS, EXTRALARGE) 

Ievērojiet paziņojumu,

 EnumSet sizes = EnumSet.allOf(Size.class); 

Šeit Size.class apzīmē mūsu izveidoto lieluma uzskaiti.

2. Izmantojot noneOf (Size)

noneOf()Metode rada tukšu enum komplektu. Piemēram,

 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); ) ) 

Rezultāts

 Tukša EnumSet: () 

Šeit mēs esam izveidojuši tukšu uzskaiti, kuras nosaukumi ir izmēri.

Piezīme . Iepriekš minētajā programmā mēs varam ievietot tikai enum veida Size elementus. Tas ir tāpēc, ka mēs izveidojām tukšo uzskaites kopu, izmantojot lieluma enum.

3. Izmantojot diapazona (e1, e2) metodi

range()Metode rada enum kopa, kas satur visas vērtības ir enum starp E1 un E2 ir arī abu vērtībām. Piemēram,

 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); ) ) 

Rezultāts

 EnumSet: (Vidējs, LARGE, EXTRALARGE) 

4. Metodes () izmantošana

of()Metode rada enum komplektu, kurā norādītos elementus. Piemēram,

 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); ) ) 

Rezultāts

 EnumSet1: (MEDIUM) EnumSet2: (MAZS, LIELS) 

EnumSet metodes

EnumSetKlase nodrošina metodes, kas ļauj mums veikt dažādus elementus uz ENUM komplektu.

Ievietojiet elementus EnumSet

  • add() - ievieto norādītās enum vērtības enum set
  • addAll() ievieto komplektā visus norādītās kolekcijas elementus

Piemēram,

 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); ) ) 

Rezultāts

 EnumSet, izmantojot add (): (MEDIUM) EnumSet, izmantojot addAll (): (SMALL, MEDIUM, LARGE, EXTRALARGE) 

Iepriekš minētajā piemērā mēs izmantojām addAll()metodi, lai visus uzskaites kopu lielumu1 elementus ievietotu uzskaites kopu izmēros2.

Tas ir arī iespējams ievietot elementus no citām kolekcijām, piemēram ArrayList, LinkedListutt uz ENUM komplektu izmanto addAll(). Tomēr visām kolekcijām jābūt viena un tā paša veida.

Piekļūstiet EnumSet Elements

Lai piekļūtu uzskaites kopas elementiem, mēs varam izmantot iterator()metodi. Lai izmantotu šo metodi, mums ir jāimportē java.util.Iteratorpakotne. Piemēram,

 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(", "); ) ) ) 

Rezultāts

 EnumSet: MAZS, VIDĒJS, LIELS, EXTRALARGE, 

Piezīme :

  • hasNext()atgriež, trueja enum kopā ir nākamais elements
  • next() atgriež nākamo elementu uzskaites komplektā

Noņemiet EnumSet Elements

  • remove() - noņem norādīto elementu no uzskaites kopas
  • removeAll() - noņem visus elementus no enum kopas

Piemēram,

 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); ) ) 

Rezultāts

EnumSet: (MAZS, VIDĒJS, LIELS, EXTRALARGE) Vai MEDIUM ir noņemts? true Vai visi elementi ir noņemti? taisnība

Citas metodes

Metode Apraksts
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?

Tas EnumSetnodrošina efektīvu veidu, kā uzglabāt uzskaites vērtības nekā citas iestatītās realizācijas (piemēram HashSet, TreeSet).

Enum kopa glabā tikai konkrētas enum vērtības. Tādējādi JVM jau zina visas iespējamās kopas vērtības.

Tas ir iemesls, kāpēc enum kopas tiek iekšēji ieviestas kā bitu secība. Bits norāda, vai elementi ir iekļauti uzskaites komplektā.

Atbilstošā elementa bits tiek ieslēgts, ja šis elements atrodas komplektā.

Interesanti raksti...