में नल कुंजी के लिए हैशकोड मैं जावा में हैश मैप और हैशटेबल क्लास के बीच अंतर के बारे में पढ़ रहा था। वहां मुझे एक अंतर मिला कि पूर्व में शून्य की अनुमति है और बाद में इसके लिए विशेषाधिकार नहीं है। जहां तक हैश मैप का काम चिंता है, मुझे पता है कि, यह बाल्टी खोजने के लिए हैशकोड विधि को कॉल करता है जिसमें उस महत्वपूर्ण मूल्य जोड़ी को रखा जाना है। यहां मेरा प्रश्न आता है: एक शून्य मान के लिए हैशकोड की गणना की जाती है या क्या हैशकोड के हैशकोड के लिए कोई डिफ़ॉल्ट मान है (यदि ऐसा है तो कृपया मान निर्दिष्ट करें)?हैश मैप
हैश मैप
उत्तर
:
public V put(K key, V value) {
if (key == null)
return putForNullKey(value);
...
और अगर आप आगे देखने के लिए आपको लगता है कि अशक्त हमेशा आप HashMap में static int hash(int h)
विधि का वर्णन पढ़ा, तो आप पाएंगे कि अशक्त कुंजी सूचकांक बिन 0
को जाता है देखेंगे 0.
जब मानचित्र में शून्य मूल्य मौजूद होता है तो उस मान की कुंजी भी शून्य होती है। आपके पास मानचित्र में कई नल कुंजी नहीं हो सकती हैं। केवल एक शून्य कुंजी।
हैश मैप के स्रोत कोड से, यदि कुंजी null
है तो इसे अलग-अलग संभाला जाता है। शून्य के लिए उत्पन्न कोई हैशकोड नहीं है, लेकिन यह अनन्य रूप से हैश वैल्यू 0 के साथ एक आंतरिक सरणी में इंडेक्स 0 पर संग्रहीत है। यह भी ध्यान रखें कि खाली स्ट्रिंग का हैश मान भी 0 है (यदि चाबियाँ स्ट्रिंग हैं), लेकिन इंडेक्स जहां यह है आंतरिक सरणी में संग्रहीत किया जाता है यह सुनिश्चित करता है कि वे मिश्रित नहीं हैं।
/**
* Offloaded version of put for null keys
*/
private V putForNullKey(V value) {
for (Entry<K,V> e = table[0]; e != null; e = e.next) {
if (e.key == null) {
V oldValue = e.value;
e.value = value;
e.recordAccess(this);
return oldValue;
}
}
modCount++;
addEntry(0, null, value, 0);
return null;
}
यह स्पष्ट रूप से क्या होता है जब आप एक कुंजी है जो नक्शे में पहले से ही था के साथ एक डाल कर कहा गया है। कुंजी == नल का विशिष्ट मामला उसी तरह व्यवहार करता है: आपके पास शून्य कुंजी के लिए दो अलग-अलग मैपिंग नहीं हो सकते हैं (जैसे कि आप किसी अन्य कुंजी के लिए नहीं कर सकते)। यह आपके प्रश्न के संदर्भ के लिए एक विशेष मामला नहीं है।
- 1. हैश मैप
- 2. हैश मैप
- 3. हैश मैप
- 4. हैश मैप
- 5. हैश मैप
- 6. हैश मैप
- 7. हैश मैप
- 8. हैश मैप
- 9. हैश मैप
- 10. हैश मैप
- 11. हैश मैप
- 12. पहचान का कॉम्बो हैश मैप और वीक हैश मैप
- 13. ऐरेलिस्ट या हैश मैप
- 14. हैश मैप नहीं Serializable
- 15. NullPointerException हैश मैप
- 16. हैश मैप रिटर्न विधि
- 17. हैश मैप JDK8
- 18. AutoCompleteTextView onItem हैश मैप
- 19. कस्टम हैश मैप कार्यान्वयन
- 20. हैश मैप सीरियलज़ेबिलिटी
- 21. हैश मैप और हैशमल्टीमैप
- 22. जावा, हैश मैप
- 23. हैश मैप डी-सीरियलाइजेशन
- 24. हैश मैप कुंजी
- 25. हैशसेट/हैश मैप जावा
- 26. WeakHashMap बनाम हैश मैप
- 27. हैश मैप को ArrayList
- 28. जावा कंसूरेंट हैश मैप
- 29. हैश मैप प्रोफाइलिंग
- 30. हैश मैप और int
मैं HashMap वर्ग कोड से मिल गया है कि लेकिन डाल कि बिन 0 में महत्वपूर्ण मूल्य जोड़ी मतलब यह है कि क्या बिन 0. – Prashant
की hashCode मूल्य इसका मतलब है कि अशक्त के लिए hashCode 0 है, या है के लिए उत्पन्न hashCode क्या है (में सिद्धांत), कोई संख्या जो num को बनाए रखती है और (tableSize-1) == 0 – radai
क्या आप यह कहना चाहते हैं कि शून्य कुंजी के लिए हैशकोड का डिफ़ॉल्ट मान 0 है और पहले बिन/बाल्टी का उपयोग इसे करने के लिए किया जाएगा हैश मैप कार्यान्वयन। – Prashant