मुझे आश्चर्य है कि क्यों Hashtable नकारात्मक हैशकोड का उपयोग करने से बचें?हैशटेबल हैशिंग नकारात्मक हैशकोड से बचें
int hash = key.hashCode();
int index = (hash & 0x7FFFFFFF) % tab.length;
कहाँ (hash & 0x7FFFFFFF)
पर हस्ताक्षर किए सा सकारात्मक 0 होने के लिए करता है, लेकिन क्यों हम अहस्ताक्षरित के रूप में हस्ताक्षर किए 32 बिट पूर्णांक का इलाज नहीं कर सकता है? या इसे सकारात्मक बनने के लिए मॉड्यूलर चाल का भी उपयोग करें। उदाहरण के लिए,
public static long int_mod(int hashcode, int tab_length){
return (hashcode % tab_length + tab_length) % tab_length;
}
मुझे लगता है कि यह विधि सरल और काम है। और शायद यही कारण है कि इसका इस्तेमाल किया गया था। '(हैश और 0x7FFFFFFF) 'सकारात्मक से संकीर्ण,'% टैब। लम्बाई' टैब आकार के लिए संकीर्ण। सरल साफ और आसान। –
आप किस विधि का जिक्र कर रहे हैं? मूल कार्यान्वयन? – peter
हां। पहले ही लागू किया गया है। –