I denne opplæringen vil vi lære om Java EnumSet-klassen og dens forskjellige metoder ved hjelp av eksempler.
Den EnumSet
klassen av Java samlinger rammeverket gir et sett implementering av elementene i en enkelt enum.
Før du lærer om EnumSet, må du huske å vite om Java Enums.
Den implementerer Set-grensesnittet.
Opprette EnumSet
For å lage et enum-sett, må vi importere java.util.EnumSet
pakken først.
I motsetning til andre settimplementasjoner har enum-settet ikke offentlige konstruktører. Vi må bruke de forhåndsdefinerte metodene for å lage et enum-sett.
1. Bruke allOf (størrelse)
Den allof()
Prosessen skaper en enum sett som inneholder alle verdier av den angitte enum tekststørrelse. For eksempel,
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); ) )
Produksjon
EnumSet: (SMALL, MEDIUM, LARGE, EXTRALARGE)
Legg merke til uttalelsen,
EnumSet sizes = EnumSet.allOf(Size.class);
Her betegner Size.class størrelsen enum vi har opprettet.
2. Bruke noneOf (størrelse)
Den noneOf()
metode fører til en tom enum sett. For eksempel,
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); ) )
Produksjon
Tom EnumSet: ()
Her har vi opprettet et tomt navn med størrelser.
Merk : Vi kan bare sette inn elementer av enum-type størrelse i programmet ovenfor. Det er fordi vi opprettet vårt tomme enumsett med Size enum.
3. Bruke rekkevidde (e1, e2) Metode
Den range()
Prosessen skaper en enum sett som inneholder alle verdiene for et enum mellom e1 og e2 inkludert begge verdier. For eksempel,
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); ) )
Produksjon
EnumSet: (MEDIUM, LARGE, EXTRALARGE)
4. Bruk av () -metoden
Den of()
Prosessen skaper en enum sett inneholdende de angitte elementene. For eksempel,
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); ) )
Produksjon
EnumSet1: (MEDIUM) EnumSet2: (LITEN, STOR)
Metoder for EnumSet
Den EnumSet
klassen inneholder metoder som tillater oss å utføre ulike elementer på enum settet.
Sett inn elementer i EnumSet
add()
- setter inn spesifiserte enumverdier til enum-settetaddAll()
setter inn alle elementene i den angitte samlingen i settet
For eksempel,
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); ) )
Produksjon
EnumSet ved hjelp av add (): (MEDIUM) EnumSet ved hjelp av addAll (): (SMALL, MEDIUM, LARGE, EXTRALARGE)
I eksemplet ovenfor har vi brukt addAll()
metoden for å sette inn alle elementene i enum-settstørrelser1 til enum-settstørrelser2.
Det er også mulig å sette inn elementer fra andre samlinger som ArrayList
, LinkedList
etc. til en enum apparatet ved hjelp addAll()
. Imidlertid bør alle samlinger være av samme type.
Få tilgang til EnumSet Elements
For å få tilgang til elementer i et enum-sett, kan vi bruke iterator()
metoden. For å kunne bruke denne metoden, må vi importere java.util.Iterator
pakken. For eksempel,
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(", "); ) ) )
Produksjon
EnumSet: SMALL, MEDIUM, LARGE, EXTRALARGE,
Merk :
hasNext()
returnerertrue
hvis det er et neste element i enum-settetnext()
returnerer neste element i enum-settet
Fjern EnumSet Elements
remove()
- fjerner det angitte elementet fra enum-settetremoveAll()
- fjerner alle elementene fra enum-settet
For eksempel,
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); ) )
Produksjon
EnumSet: (SMALL, MEDIUM, LARGE, EXTRALARGE) Er MEDIUM fjernet? true Er alle elementene fjernet? ekte
Andre metoder
Metode | Beskrivelse |
---|---|
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?
Dette EnumSet
gir en effektiv måte å lagre enumverdier på enn andre sett implementeringer (som HashSet
, TreeSet
).
Et enum-sett lagrer bare enumverdier for et bestemt enum. Derfor kjenner JVM allerede alle mulige verdier for settet.
Dette er grunnen til at enum-sett er implementert internt som en sekvens av biter. Bits spesifiserer om elementer er tilstede i enum-settet eller ikke.
Biten til et tilsvarende element er slått på hvis elementet er tilstede i settet.