मैं जावा के HashMap स्रोत कोड के माध्यम से जा रहा था जब मैं निम्नलिखितहैश मैप की आवश्यकता क्यों है कि प्रारंभिक क्षमता दो की शक्ति हो?
//The default initial capacity - MUST be a power of two.
static final int DEFAULT_INITIAL_CAPACITY = 16;
मेरा प्रश्न देखा क्यों इस आवश्यकता को पहली जगह में मौजूद है? मैं यह भी देखना है कि निर्माता जो एक कस्टम क्षमता के साथ एक HashMap बनाने की अनुमति देता है दो का एक बिजली में परिवर्तित कर:
int capacity = 1;
while (capacity < initialCapacity)
capacity <<= 1;
क्यों क्षमता हमेशा की तरह ही दोनों में से एक शक्ति होने के लिए करता है?
इसके अलावा, जब स्वचालित रीहैशिंग किया जाता है, तो वास्तव में क्या होता है? हैश फ़ंक्शन भी बदल गया है?
बिल्कुल वही जो मैं खोज रहा था, धन्यवाद। एक और संदेह, प्रविष्टि तालिका क्षणिक क्यों है, भले ही यह सभी डेटा रखती है? – Sushant
@ सुशांत: तालिका में डेटा * स्पष्ट रूप से * लिखने के भीतर क्रमबद्ध है ऑब्जेक्ट (ताकि सभी खाली प्रविष्टियां लिखी न हों)। फील्ड क्षणिक बनाना सामान्य क्रमबद्धता कोड को * * * इसे कॉल में 'डिफ़ॉल्ट WriteObject' पर लिखने से रोकता है। –
@ जोनस्केट एच और (लंबाई -1) नकारात्मक के साथ कैसे निपटता है? आइए लंबाई = 16 और एच = -7 – Geek