Јава ЕнумСет

У овом упутству ћемо научити о класи Јава ЕнумСет и њеним разним методама уз помоћ примера.

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

Скуп набрајања чува само вредности набрајања одређеног набрајања. Отуда ЈВМ већ зна све могуће вредности скупа.

То је разлог зашто се енум скупови интерно примењују као низ битова. Битс одређује да ли су елементи присутни у енум скупу или не.

Бит одговарајућег елемента се укључује ако је тај елемент присутан у скупу.

Занимљиви Чланци...