У овом упутству ћемо научити о класи Јава ЕнумСет и њеним разним методама уз помоћ примера.
EnumSet
Класа збирки оквира Јава обезбеђује скуп примену елемената једне енум.
Пре него што научите о ЕнумСет-у, обавезно сазнајте више о Јава Енум-у.
Примењује интерфејс Сет.
Креирање ЕнумСет-а
Да бисмо креирали енум сет, прво морамо да увозимо java.util.EnumSet
пакет.
За разлику од других имплементација скупова, енум скуп нема јавне конструкторе. Морамо користити унапред дефинисане методе да бисмо креирали скуп набрајања.
1. Коришћење аллОф (величина)
allof()
Метода ствара енум скуп који садржи све вредности одређеног типа енум Сизе. На пример,
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); ) )
Оутпут
ЕнумСет: (МАЛИ, СРЕДЊИ, ВЕЛИКИ, ВЕЛИКИ)
Обратите пажњу на изјаву,
EnumSet sizes = EnumSet.allOf(Size.class);
Овде Сизе.цласс означава Сизе Сизе који смо креирали.
2. Коришћење нонеОф (величина)
noneOf()
Начин ствара празан енум сет. На пример,
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); ) )
Оутпут
Испразни ЕнумСет: ()
Овде смо креирали празан набрајање имена величине.
Напомена : У горњи програм можемо уметнути само елементе енум типа Сизе. То је зато што смо креирали свој празни скуп набрајања користећи Сизе набрајање.
3. Коришћење методе опсега (е1, е2)
range()
Метода ствара енум изглед садржи све вредности једног енум између Е1 и Е2, укључујући обе вредности. На пример,
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); ) )
Оутпут
ЕнумСет: (СРЕДЊИ, ВЕЛИКИ, ВЕЋИ)
4. Коришћење методе ()
of()
Метода ствара енум изглед садржи наведене елементе. На пример,
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); ) )
Оутпут
ЕнумСет1: (СРЕДЊИ) ЕнумСет2: (МАЛИ, ВЕЛИКИ)
Методе ЕнумСет-а
EnumSet
Класа даје методе које омогућавају да обављају различите елементе на енум сету.
Уметните елементе у ЕнумСет
add()
- убацује наведене вредности набрајања у скуп набрајањаaddAll()
убацује све елементе наведене колекције у скуп
На пример,
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); ) )
Оутпут
ЕнумСет помоћу адд (): (МЕДИУМ) ЕнумСет помоћу аддАлл (): (СМАЛЛ, СРЕДЊИ, ВЕЛИКИ, ЕКСТРАЛАРГЕ)
У горњем примеру, користили смо addAll()
методу за уметање свих елемената набора величине величине1 у бројеве броја броја2.
Такође је могуће уметнути елементе из других збирки, као што су ArrayList
, LinkedList
итд на енум сет користећи addAll()
. Међутим, све збирке треба да буду истог типа набрајања.
Приступите елементима ЕнумСет
Да бисмо приступили елементима енум скупа, можемо користити iterator()
методу. Да бисмо користили овај метод, морамо увозити java.util.Iterator
пакет. На пример,
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(", "); ) ) )
Оутпут
ЕнумСет: МАЛИ, СРЕДЊИ, ВЕЛИКИ, ВЕЛИКИ,
Напомена :
hasNext()
враћаtrue
ако постоји следећи елемент у скупу набрајањаnext()
враћа следећи елемент у скупу набрајања
Уклоните ЕнумСет елементе
remove()
- уклања наведени елемент из скупа набрајањаremoveAll()
- уклања све елементе из енум скупа
На пример,
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); ) )
Оутпут
ЕнумСет: (МАЛО, СРЕДЊЕ, ВЕЛИКО, ВЕЛИКО) Да ли је СРЕДЊЕ уклоњено? тачно Да ли су уклоњени сви елементи? истина
Остале методе
Метод | Опис |
---|---|
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?
EnumSet
Пружа ефикасан начин за чување ЕНУМ вредности од осталих постављених имплементације (као HashSet
, TreeSet
).
Скуп набрајања чува само вредности набрајања одређеног набрајања. Отуда ЈВМ већ зна све могуће вредности скупа.
То је разлог зашто се енум скупови интерно примењују као низ битова. Битс одређује да ли су елементи присутни у енум скупу или не.
Бит одговарајућег елемента се укључује ако је тај елемент присутан у скупу.