सबसे पहले: HashMap
विशेष रूप से एक स्थिर और/या परिभाषित आदेश प्रदान नहीं करता है। तो आप जो भी देखते हैं वह केवल एक कार्यान्वयन विवरण है और आप किसी भी तरह से इस पर निर्भर नहीं होना चाहिए।
एक HashMap
(एक सरणी के रूप में लागू), जिसमें प्रविष्टियों स्टोर करने के लिए बकेट की संख्या है:
चूंकि यह कभी कभी मालूम होता है यादृच्छिक आदेश देने के लिए कारण जानना उपयोगी है, यहाँ मूल विचार है।
जब कोई आइटम मानचित्र में जोड़ा जाता है, तो इसे hashCode
से प्राप्त मूल्य और HashMap
के बाल्टी आकार के आधार पर बाल्टी को असाइन किया जाता है। (ध्यान दें कि यह संभव है कि बाल्टी पहले से ही कब्जा कर लिया गया है, जिसे टकराव कहा जाता है। इसे सुंदर और सही तरीके से संभाला जाता है, लेकिन मैं वर्णन के लिए हैंडलिंग को अनदेखा कर दूंगा क्योंकि यह अवधारणा को नहीं बदलेगा)।
आग के अनुमानित क्रम (जैसे Map
पर पुनरावृत्ति द्वारा लौटाया गया) उन बाल्टी में प्रविष्टियों के क्रम पर निर्भर करता है।
जब भी आकार को फिर से चलाया जाता है (क्योंकि नक्शा इसकी पूर्णता दहलीज से अधिक हो जाता है), तो बाल्टी की संख्या में परिवर्तन होता है, जिसका अर्थ है कि प्रत्येक तत्व की स्थिति बदल सकती है, क्योंकि बाल्टी स्थिति बाल्टी की संख्या से भी ली जाती है ।
स्रोत
2010-05-12 10:06:12
करता है फिर भी हैशमैप हर बार एक ही अनुमानित अनुक्रम का पालन करता है ... क्यों? –
@ पॉप स्टैक हैश मैप आदेश की गारंटी नहीं देता है। Http://stackoverflow.com/questions/2144776/order-of-values-retrieved-from-a-hashmap पर स्टीफन सी का उत्तर देखें कि यह कैसे और क्यों बदल सकता है। –
इस तरह के उत्तर बहुत अच्छे हैं! जावा में सभी मानचित्र, सूची, सेट के बीच मतभेदों को सूचीबद्ध करने के लिए एक धोखा शीट अद्भुत होगी! –