2012-06-30 19 views
6

इस बीच क्या अंतर है:EnumMap बनाम Enum महत्व देता

public enum Direction { 
    NORTH(90), 
    EAST(0), 
    SOUTH(270), 
    WEST(180); 

    private final int degree_; 

    private Direction(int degree) { 
     degree_ = degree; 
    } 

    public int getDegree() { 
     return degree_; 
    } 

    public static void main(String[] args) { 
     System.out.println(NORTH.getDegree()); 
    } 
} 

और इस:

public enum Direction { 
    NORTH, 
    EAST, 
    SOUTH, 
    WEST; 

    public static void main(String[] args) { 
     EnumMap<Direction, int> directionToDegree = new EnumMap<Direction, int>(Direction.class); 
     directionToDegree.put(NORTH, 90); 
     directionToDegree.put(EAST, 0); 
     directionToDegree.put(SOUTH, 270); 
     directionToDegree.put(WEST, 180); 

     System.out.println(directionToDegree.get(NORTH)); 
    } 
} 

एक पढ़ने में आसान है? क्या एक और लचीला है? क्या कोई अधिक पारंपरिक रूप से उपयोग किया जाता है? क्या कोई तेजी से चलता है? कोई अन्य पेशेवर और विपक्ष?

उत्तर

6

पहला मामला आपके पास enum मान (केवल एक मान) से जुड़ी संपत्ति है।

दूसरा आपके पास मूल्यवान एनम से बाहर प्रबंधित है।

कल्पना करें कि अब आप अपने आवेदन में इस मूल्य तक पहुंचना चाहते हैं। यदि यह दूसरे मामले पर स्थिर है तो यह मानचित्र को हर जगह से संदर्भित करने के लिए और अधिक जटिल होगा।

जब आपके पास अलग-अलग संदर्भ होते हैं तो दूसरा दृष्टिकोण उपयोगी होगा। उदाहरण के लिए: NORTH, एक विशिष्ट संदर्भ में NORTH 9 0 होना चाहिए, लेकिन दूसरे संदर्भ में इसके लिए एक और मूल्य आवश्यक होगा (यहां एक संदर्भ एक विशिष्ट कार्यान्वयन हो सकता है)।

+0

संपत्ति "बाध्य" क्यों है? क्या यह "बंधुआ" के लिए एक टाइपो है? नाइट-पिकिंग, उत्सुक नहीं। – Thufir

+0

@ थफिर: धन्यवाद, यह एक टाइपो –

+0

एलओएल था, मैंने सोचा था कि कुछ विशेष अर्थ था :) मैं ऊपरी और निचली सीमाओं के बारे में सोच रहा था..एटीसी – Thufir

6

एनम स्थिरांक में मूल्य जोड़ना स्वयं उन्हें किसी अन्य वस्तु के संदर्भ के बिना उपयोग करने योग्य बनाता है। यदि आप इस जानकारी को मानचित्र में संग्रहीत करते हैं, तो आपको मानचित्र के संदर्भों को संदर्भित करना होगा। यदि ये धारणाओं के आधारभूत धारणाओं के मूलभूत गुण हैं, तो संभवतः मानचित्र में उन्हें संग्रहीत करने के बजाय मूल्यों को स्थिरांक में जोड़ना सबसे अच्छा है।

एनम स्थिरांक पर मूल्यों का उपयोग मानचित्र में उन्हें संग्रहीत करने से तेज़ होगा।

+0

पहली विधि तेज क्यों होगी? – Geek

7

EnumMap के लिए मुख्य उपयोग केस तब होता है जब आप enum पर अतिरिक्त डेटा संलग्न नहीं करना चाहते हैं। आम तौर पर आप एक सार्वजनिक पुस्तकालय का उपयोग कर रहे हैं जिसमें एक enum है और आपको प्रत्येक सदस्य को अपने डेटा के साथ एनोटेट करने की आवश्यकता है।

एक सामान्य नियम के रूप में, जब भी दोनों दृष्टिकोण आपके लिए उपलब्ध होते हैं, तो पहले का उपयोग करें।

+0

मुझे आपके जवाब व्यावहारिक अनुप्रयोगों से भरे हुए हैं कि क्या करना है? धन्यवाद और +1। – Geek

+0

धन्यवाद बहुत कुछ है जो मैंने पाया सबसे अच्छा स्पष्टीकरण है। – Heaven42

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