2012-01-19 5 views
32

जावा में अद्वितीय कुंजी के साथ मेरे पास हैश मैप कैसे हो सकता है? या यहां तक ​​कि यह हैश मैप में अनन्य कुंजी रखने का कोई अर्थ है या कुंजी डिफ़ॉल्ट रूप से अद्वितीय हैं? मैं एक नौसिखिया हूँ। thxजावा में अद्वितीय कुंजी के साथ हैश मैप कैसे हो सकता है?

+5

डिफ़ॉल्ट रूप से कुंजी _are_ अद्वितीय। ध्यान दें कि 'मैप' पर '.keySet()' एक 'सेट' देता है, और 'सेट' के तत्व डिफ़ॉल्ट रूप से अद्वितीय होते हैं। यदि आप किसी मौजूदा कुंजी पर मान को धक्का देने का प्रयास करते हैं, तो पुराना मान ओवरराइट हो जाएगा। – fge

+1

ध्यान दें कि जावा में "अनूठा" का अर्थ है विधियों के बराबर और हैशकोड के कार्यान्वयन के मामले में बराबर! – Hachi

उत्तर

26

कुंजी सभी मानचित्रों में अद्वितीय हैं। विभिन्न मानचित्र कार्यान्वयन के बीच का अंतर शून्य कुंजी, पुनरावृत्ति के क्रम और समवर्ती मुद्दों की संभावना से संबंधित है।

47

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

HashMap hm = new HashMap(); 
hm.put("1", new Integer(1)); 
hm.put("2", new Integer(2)); 
hm.put("3", new Integer(3)); 
hm.put("4", new Integer(4)); 
hm.put("1", new Integer(5));// value integer 1 is overwritten by 5 

डिफ़ॉल्ट रूप से हैशमैप सिंक्रनाइज़ नहीं है।

+0

तो हम कैसे महत्वपूर्ण मूल्य संबंध अद्वितीय नहीं बनाते हैं, यानी, मैं ऊपर की कुंजी 1 के लिए मूल्य 5 भी चाहता हूं? क्या उस उद्देश्य को पूरा करने के लिए कोई तरीका है –

+0

@ वामसी पावन माहेश, आपको कुछ प्रकार की 'सूची' स्टोर करना होगा या उस संबंधित 'कुंजी' के लिए' मानचित्र'। 'मानचित्र <स्ट्रिंग, सूची एम = नया हैश मैप <>();' – Emz

1

हैसैप में अद्वितीय कुंजी हैं। जैसा कि .keySet() रिटर्न सेट करता है जिसमें अद्वितीय सदस्य हैं

1

हैश मैप स्टोर (कुंजी, मूल्य) जोड़े को संग्रहीत करने के लिए संग्रह है और HashMap के दस्तावेज़ों के अनुसार कुंजी हमेशा अनूठी होती हैं।

यदि आप हैशैप में पहले से मौजूद एक मौजूद कुंजी (टकराव) जोड़ते हैं, तो पुराना मान बदल दिया जाएगा।

1

एक जेनेरिक हैशैप आमतौर पर एक एसोसिएटिव सरणी के रूप में लागू किया जाता है, तो मान लीजिए कि आपके सरणी में एन तत्व हैं, 0 से एन -1 तक, जब आप एक नई (कुंजी, मूल्य) जोड़ी जोड़ना चाहते हैं, तो इसके पीछे क्या किया जाता है दृश्यों (बस धारणात्मक) है:

  1. सूचकांक = हैश (key) आधुनिक एन
  2. सरणी [सूचकांक] = मूल्य

तो, निर्माण से, एक महत्वपूर्ण एक और केवल एक करने के लिए मैप किया गया है सरणी प्रविष्टि

कृपया ध्यान दें कि यह वास्तव में थोड़ा अधिक इस से जटिल है: मैं, आदि टक्कर से निपटने की तरह उद्देश्य बातों पर अनदेखी कर रहा हूँ rehashing,, आप एक अच्छे सामान्य विचार यहाँ https://en.wikipedia.org/wiki/Hash_table

1

कोशिश Java API for Map को देखने के लिए हो सकता है जो इंटरफेस है कि HashMap उपकरण। पहली वाक्य है:

एक ऑब्जेक्ट जो कुंजी को मानने के लिए मानचित्र करता है। एक मानचित्र में डुप्लिकेट कुंजी नहीं हो सकती है; प्रत्येक कुंजी अधिकतम एक मूल्य पर मैप कर सकती है।