ArrayList
की मेरी समझ के अनुसार, डिफ़ॉल्ट क्षमता 10 है और जब यह 10 से परे होती है, यह इतने पर नई क्षमता और के साथ एक नई वस्तु ..क्यों hashCode() एक ArrayList परिवर्तन की हर बार जब आप एक नए तत्व जोड़ता है?
तो पैदा करेगा, मैं जाँच करने के लिए कार्यक्रम निम्नलिखित टाइप ArrayList
वस्तु के लिए hashcode()
:
public class TestCoreJava {
public static void main(String [] args){
ArrayList al = new ArrayList();
for(int i=0;i<15;i++){
al.add("Temp"+i);
System.out.println("Hashcode for "+i+" element "+al.hashCode());
}
}
}
उपरोक्त परिदृश्य के अनुसार, जब मैं ArrayList
के लिए प्रारंभिक क्षमता की स्थापना नहीं कर रहा हूँ डिफ़ॉल्ट होगा 10 तो 11 वीं तत्व जोड़ते समय, यह एक नई वस्तु बनाने जाएगा और के लिए क्षमता में वृद्धि ArrayList
।
जब मैं ArrayList
वस्तु के लिए hashCode प्रिंट, यह एक नई hashcode()
हर बार दे रहा है।
के बाद ओ/पी है:
Hashcode for 0 element 80692955
Hashcode for 1 element -1712792766
Hashcode for 2 element -1476275268
Hashcode for 3 element 1560799875
Hashcode for 4 element 1220848797
Hashcode for 5 element -727700028
Hashcode for 6 element -1003171458
Hashcode for 7 element -952851195
Hashcode for 8 element 607076959
Hashcode for 9 element 1720209478
Hashcode for 10 element -6600307
Hashcode for 11 element -1998096089
Hashcode for 12 element 690044110
Hashcode for 13 element -1876955640
Hashcode for 14 element 150430735
डिफ़ॉल्ट क्षमता की अवधारणा के अनुसार, 10 वीं तत्व जब तक यह एक ही hashcode()
मुद्रित किया जाना चाहिए था के रूप में कोई नई वस्तु उस समय तक बनाने की आवश्यकता है, लेकिन यह है मामला नहीं। ArrayList
की
'hashCode()' 'बराबर()' जो इंगित करता है कि विभिन्न तत्वों लेकिन एक ही क्षमता के साथ 2 सूचियों अलग हैश कोड लौटना चाहिए (जो वे करते हैं अगर आप स्रोतों को देखने) के – Thomas
संभावित डुप्लिकेट से जुड़ा हुआ है [जावा में बराबर और हैशकोड ओवरराइड करते समय किन मुद्दों पर विचार किया जाना चाहिए?] (Http://stackoverflow.com/questions/27581/what-issues-should-be-Considered-when-overriding-equals-and-hashcode-in- जावा) – Raedwald