Selles õpetuses õpime näidete abil tundma Java EnumSeti klassi ja selle erinevaid meetodeid.
EnumSet
Klassi 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.EnumSet
esmalt 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
EnumSet
Klassi ette meetodid, mis võimaldavad meil sooritada erinevaid elemente enum komplekti.
Sisestage elemendid EnumSeti
add()
- lisab loendikomplekti määratud loendi väärtusedaddAll()
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
, LinkedList
jne 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.Iterator
pakendi 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,true
kui loendikomplektis on järgmine elementnext()
tagastab loendikomplekti järgmise elemendi
Eemaldage EnumSet Elements
remove()
- eemaldab määratud elemendi loendikomplektistremoveAll()
- 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 EnumSet
pakub 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.