Š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.
EnumSet
Java 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.EnumSet
pakete.
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
EnumSet
Klase 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 setaddAll()
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
, LinkedList
utt 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.Iterator
pakotne. 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ž,true
ja enum kopā ir nākamais elementsnext()
atgriež nākamo elementu uzskaites komplektā
Noņemiet EnumSet Elements
remove()
- noņem norādīto elementu no uzskaites kopasremoveAll()
- 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 EnumSet
nodroš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ā.