2010-09-07 12 views
11

अगर मैं एक Enum है, मैं काम EnumSet वर्गजावा EnumSets का मेल

enum Suit { CLUBS, DIAMONDS, HEARTS, SPADES } 
EnumSet<Suit> reds = EnumSet.of(Suit.HEARTS, Suit.DIAMONDS); 
EnumSet<Suit> blacks = EnumSet.of(Suit.CLUBS, Suit.SPADES); 

का उपयोग कर दो EnumSets दें एक EnumSet बना सकते हैं, कैसे मैं एक नया EnumSet जो उन सेट के दोनों का मिलन होता है बना सकते हैं?

EnumSet<Suit> redAndBlack = ?

उत्तर

21

एक EnumSet भी एक संग्रह है, तो आप इस तरह के addAll के रूप में, संग्रहण API के कई रूप में अच्छी तरह कॉल का उपयोग कर सकते है।

EnumSet<Suit> redAndBlack = EnumSet.copyOf(reds); 
redAndBlack.addAll(blacks); 
5

इस मामले में, आप भी इस्तेमाल कर सकते हैं

EnumSet<Suit> redAndBlack = EnumSet.allOf(Suit.class) 
+2

यह सही है, तो सवाल का जवाब है, और कुछ पाठकों के लिए उपयोगी हो सकता है। इसे कम क्यों किया गया है? –

+0

@ माइकलशेपर: यह दो सेटों का संघ नहीं है, यह मूल सेट है। इस मामले में वे बराबर हैं, लेकिन आप सही हैं। अगर मुझे लगता है कि मैं कहूंगा कि इसे कम करने का कारण यह है क्योंकि जब आप जावा एनम यूनियन खोजते हैं तो यह पॉप अप होता है। – Jpatrick

+1

@Jpatrick:: nod: ओपी के सवाल का जवाब देने के लिए किसी को दंडित करने के लिए यह विरोधाभासी और मूर्खतापूर्ण प्रतीत होता है, जब यह उनकी इच्छा से अलग होता है। लेकिन पिछले 24 घंटों में यह स्पष्ट हो गया है कि दुनिया में कितने नफरत हैं, इसलिए मुझे आश्चर्य नहीं होना चाहिए। –

संबंधित मुद्दे