Java EnumSet

Selles õpetuses õpime näidete abil tundma Java EnumSeti klassi ja selle erinevaid meetodeid.

EnumSetKlassi Java kogud raames pakub kogum osade rakendamise ühe enum.

Enne kui leiate teavet EnumSeti kohta, teadke kindlasti Java Enumsit.

See rakendab liidest Set.

EnumSeti loomine

Loendikomplekti loomiseks peame java.util.EnumSetesmalt paketi importima .

Erinevalt teistest komplekti teostustest pole loendikomplektil avalikke konstruktoreid. Loendikomplekti loomiseks peame kasutama eelnevalt määratletud meetodeid.

1. allOfi (suurus) kasutamine

allof()Meetod loob ENUMi komplekt, mis sisaldab kõiki väärtusi määratud enum tüüpi Suurus. Näiteks,

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

Väljund

 EnumSet: (VÄIKE, KESKMINE, SUUR, ÜLISALGA) 

Pange tähele avaldust,

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

Siin tähistab Size.class meie loodud suuruse loendit.

2. Kasutades noneOf (suurus)

noneOf()Meetod tekitab tühja enum komplekti. Näiteks,

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

Väljund

 Tühi EnumSet: () 

Siin oleme loonud tühja loendi nimega suurused.

Märkus : ülaltoodud programmi saab sisestada ainult loenditüübi Size elemente. Selle põhjuseks on see, et lõime oma tühja loendikomplekti, kasutades suuruse loendit.

3. Vahemiku (e1, e2) meetodi kasutamine

range()Meetod tekitab ENUMi komplekt sisaldab kõiki väärtusi ENUMi vahel E1 ja E2 sealhulgas mõlemad väärtused. Näiteks,

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

Väljund

 EnumSet: (KESKMINE, SUUR, ÜLISALGA) 

4. Meetodi () kasutamine

of()Meetod loob ENUMi komplekt, mis sisaldab teatud elemente. Näiteks,

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

Väljund

 EnumSet1: (KESKMINE) EnumSet2: (VÄIKE, SUUR) 

EnumSeti meetodid

EnumSetKlassi ette meetodid, mis võimaldavad meil sooritada erinevaid elemente enum komplekti.

Sisestage elemendid EnumSeti

  • add() - lisab loendikomplekti määratud loendi väärtused
  • addAll() lisab komplekti kõik määratud kogumi elemendid

Näiteks,

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

Väljund

 EnumSet kasutades add (): (MEDIUM) EnumSet kasutades addAll (): (VÄIKE, KESKMINE, SUUR, EXTRALARGE) 

Ülaltoodud näites oleme kasutanud addAll()meetodit kõigi loendikogumi suuruste1 elementide sisestamiseks loendikogumi suurusteks2.

On ka võimalik, et sisestada elemente teistest kogudest nagu ArrayList, LinkedListjne ENUMi komplekti kasutades addAll(). Kuid kõik kollektsioonid peaksid olema sama tüüpi.

Juurdepääs EnumSeti elementidele

Loendikomplekti elementidele juurde pääsemiseks saame kasutada iterator()meetodit. Selle meetodi kasutamiseks peame java.util.Iteratorpakendi importima . Näiteks,

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

Väljund

 EnumSet: VÄIKE, KESKMINE, SUUR, VÄLISALA, 

Märkus :

  • hasNext()naaseb, truekui loendikomplektis on järgmine element
  • next() tagastab loendikomplekti järgmise elemendi

Eemaldage EnumSet Elements

  • remove() - eemaldab määratud elemendi loendikomplektist
  • removeAll() - eemaldab loendikomplektist kõik elemendid

Näiteks,

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

Väljund

EnumSet: (VÄIKE, KESKMINE, SUUR, ÜLISALGA) Kas KESKMINE eemaldatakse? true Kas kõik elemendid on eemaldatud? tõsi

Muud meetodid

Meetod Kirjeldus
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?

See EnumSetpakub tõhusat viisi loendiväärtuste salvestamiseks kui muud määratud rakendused (näiteks HashSet, TreeSet).

Loendikogum salvestab ainult konkreetse loendi loendiväärtused. Seega teab JVM juba komplekti kõiki võimalikke väärtusi.

See on põhjus, miks loendikomplekte rakendatakse sisemiselt bittide jadana. Bits täpsustab, kas loendis on elemente või mitte.

Vastava elemendi bitt lülitatakse sisse, kui see element on komplektis olemas.

Huvitavad Artiklid...