2012-06-11 9 views
10

संभव डुप्लिकेट:
Differences between HashMap and Hashtable?जावा में हैश मैप का उपयोग करने का मुख्य लाभ क्या है?

इस जावा परियोजना मैं देख रहा हूँ में, मैं HashMap के साथ कोड को देखकर तो

/** imageID --> image map */ 
    Map<String,ImageIcon> imgs = new HashMap<String,ImageIcon>(); 

की तरह फिर बाद में में रखने के लिए, कक्षा:

// images 
loadImages(); 
actualImage = imgs.get(this.DEFAULT_IMAGE_ID); 
JLabel label = new JLabel(actualImage); 

इस कोड का उद्देश्य क्या है? मैं यहां पूरी अवधारणा पर धुंधला हूं। धन्यवाद

+0

@ जिगारजोशी - उस लिंक के लिए धन्यवाद, और अच्छी बात। मेरे संपादन के बाद; मुझे लगता है कि मेरा प्रश्न थोड़ा अलग है – Coffee

उत्तर

18

दोनों डेटा के लिए महत्वपूर्ण मूल्य प्रदान करते हैं। हैशटेबल जावा में मूल संग्रह कक्षाओं में से एक है। हैश मैप नए संग्रह फ्रेमवर्क का हिस्सा है, जावा 2, v1.2 के साथ जोड़ा गया है।

दोनों के बीच महत्वपूर्ण अंतर यह है कि हैशटेबल तक पहुंच हैशैशैप तक पहुंच के दौरान तालिका पर सिंक्रनाइज़ किया गया है। आप इसे जोड़ सकते हैं, लेकिन यह डिफ़ॉल्ट रूप से नहीं है।

एक और अंतर यह है कि हैश मैप में इटरेटर विफल-सुरक्षित है जबकि हैशटेबल के लिए गणनाकर्ता नहीं है। यदि आप पुनरावृत्ति करते समय मानचित्र बदलते हैं, तो आपको पता चलेगा।

और, तीसरा अंतर यह है कि हैश मैप इसमें शून्य मानों को अनुमति देता है, जबकि हैशटेबल नहीं करता है।

आपकी संपादित प्रश्न के उत्तर:

/** imageID --> image map */ 
//imageID - String. imgs is a map of imageID and ImageIcon. imageID is key. ImageIcon is value. 
    Map<String,ImageIcon> imgs = new HashMap<String,ImageIcon>(); 

फिर बाद में कक्षा में:

//SEE INLINE COMMENTS 
// images 
//No definition provided. May be putting values into the imgs map. 
loadImages(); 
//this.DEFAULT_IMAGE_ID is some imageID. imgs.get gets the value for that imageID, which 
//is ImageIcon for that imageID. That is stored in actualImage variable. 
actualImage = imgs.get(this.DEFAULT_IMAGE_ID); 
//Creating a new JLabel with actualImage. 
JLabel label = new JLabel(actualImage); 
+0

आपको बहुत धन्यवाद! – Coffee

+0

ठीक है मैं wiiillll;) – Coffee

2

जावा में HashMap का उपयोग करने का मुख्य लाभ होगा? शायद गति। यह कंटेनर अपने डेटा को "बाल्टी" में विभाजित करता है जिसमें कुंजी के समान हैशकोड वाले तत्व होते हैं। इस तरह जब इसे कुछ कुंजी-मूल्य जोड़ी ढूंढने की ज़रूरत होती है, तो उसे अपने सभी डेटा पर पुन: प्रयास नहीं करना पड़ता है, लेकिन खोजी कुंजी के हैशकोड के रूप में कुंजी में उसी हैशकोड वाले तत्वों पर ही।

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