जावा EnumSet

इस ट्यूटोरियल में, हम उदाहरणों की मदद से Java EnumSet क्लास और इसके विभिन्न तरीकों के बारे में जानेंगे।

EnumSetजावा संग्रह ढांचे का वर्ग एकल एनम के तत्वों का एक सेट कार्यान्वयन प्रदान करता है।

EnumSet के बारे में जानने से पहले, जावा Enums के बारे में जानना सुनिश्चित करें।

यह सेट इंटरफ़ेस को लागू करता है।

EnumSet बनाना

एनम सेट बनाने के लिए, हमें java.util.EnumSetपहले पैकेज को आयात करना होगा ।

अन्य सेट कार्यान्वयनों के विपरीत, एनम सेट में सार्वजनिक निर्माता नहीं होते हैं। Enum set बनाने के लिए हमें पूर्वनिर्धारित विधियों का उपयोग करना चाहिए।

1. AllOf (आकार) का उपयोग करना

allof()विधि एक enum सेट है कि निर्दिष्ट enum प्रकार आकार सभी मान हैं पैदा करता है। उदाहरण के लिए,

 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: (छोटे, मध्यम, बड़े, बाहरी) 

कथन पर ध्यान दें,

 EnumSet sizes = EnumSet.allOf(Size.class); 

यहाँ, Size.class ने हमारे द्वारा बनाए गए आकार Enum को दर्शाता है।

2. कोई नहीं का उपयोग करना (आकार)

noneOf()विधि एक खाली enum सेट बनाती है। उदाहरण के लिए,

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

आउटपुट

 खाली EnumSet: () 

यहाँ, हमने एक खाली एनम नाम आकार बनाया है।

नोट : हम उपरोक्त प्रोग्राम में केवल enum type size के तत्वों को सम्मिलित कर सकते हैं। यह इसलिए है क्योंकि हमने साइज एनम का उपयोग करके अपना खाली एनम सेट बनाया है।

3. रेंज (ई 1, ई 2) विधि का उपयोग करना

range()विधि एक enum E1 और दोनों मानों सहित e2 के बीच एक enum के सभी मानों युक्त सेट बनाती है। उदाहरण के लिए,

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

आउटपुट

 EnumSet: (MEDIUM, LARGE, EXTRALARGE) 

4. () विधि का उपयोग करना

of()विधि एक enum निर्दिष्ट तत्वों से युक्त सेट बनाती है। उदाहरण के लिए,

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

आउटपुट

 EnumSet1: (MEDIUM) EnumSet2: (छोटे, बड़े) 

EnumSet के तरीके

EnumSetवर्ग तरीकों कि हमें enum सेट पर विभिन्न तत्वों करने की अनुमति प्रदान करता है।

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

आउटपुट

 Add (): (MEDIUM) का उपयोग कर EnumSet addAll (): (SMALL, MEDIUM, LARGE, EXTRALARGE) का उपयोग करके EnumSet 

उपरोक्त उदाहरण में, हमने addAll()एक एनुम सेट साइज़ 1 के सभी तत्वों को एनम सेट साइज़ 2 में सम्मिलित करने के लिए विधि का उपयोग किया है ।

यह भी इस तरह के रूप में अन्य संग्रहों से तत्वों को सम्मिलित करने के संभव है ArrayList, LinkedListआदि एक enum का उपयोग कर सेट करने के लिए addAll()। हालाँकि, सभी संग्रह एक ही समान प्रकार के होने चाहिए।

प्रवेश EnumSet तत्वों

एनम सेट के तत्वों तक पहुंचने के लिए, हम 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(", "); ) ) ) 

आउटपुट

 EnumSet: SMALL, MEDIUM, LARGE, EXTRALARGE, 

नोट :

  • hasNext()trueअगर एनम सेट में एक अगला तत्व है तो रिटर्न
  • next() एनम सेट में अगला तत्व देता है

EnumSet Elements निकालें

  • 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); ) ) 

आउटपुट

EnumSet: (SMALL, MEDIUM, LARGE, EXTRALARGE) क्या मेडम को हटा दिया गया है? क्या सभी तत्व हटा दिए गए हैं? सच

अन्य तरीके

तरीका विवरण
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दूसरे सेट कार्यान्वयन (जैसे से enum मान संग्रहीत करने के लिए एक कारगर तरीका प्रदान करता है HashSet, TreeSet)।

एक एनुम सेट केवल एक विशिष्ट एनम के एनम मानों को संग्रहीत करता है। इसलिए, जेवीएम पहले से ही सेट के सभी संभावित मूल्यों को जानता है।

यही कारण है कि एनम सेट को बिट्स के अनुक्रम के रूप में आंतरिक रूप से लागू किया जाता है। बिट्स निर्दिष्ट करता है कि तत्व एनुम सेट में मौजूद हैं या नहीं।

तत्संबंधी तत्व का बिट चालू है यदि वह तत्व सेट में मौजूद है।

दिलचस्प लेख...