वास्तव में, यह एक बुरा विचार नहीं है!
लेकिन सुनिश्चित करें कि आप असमानता निर्धारित करने के लिए इस विधि का उपयोग करते हैं, समानता नहीं। हैशिंग कोड समानता की जांच करने से तेज़ हो सकता है, खासकर जब हैशकोड संग्रहीत किया जाता है (उदाहरण के लिए java.lang.String
में)।
दो वस्तु अलग hashcodes है, तो वे होना चाहिए अलग है, और वे एक ही हो सकता है।उदाहरण के लिए आप निम्नलिखित
Object a, b;
if(a.hashCode() == b.hashCode()){
if(a.equals(b)) return true;
}
return false;
के रूप में इस विधि का उपयोग कर सकते हैं के बारे में पता कुछ मामलों में ऊपर कोड केवल equals()
का उपयोग कर की तुलना में धीमी हो सकता है कि हो सकता है, खासकर जब ज्यादातर मामलों में a
बराबर b
करता है।
Object.java
के प्रलेखन से:
- दो तो वस्तुओं
equals(Object)
विधि के अनुसार बराबर हैं, तो बुला दो वस्तुओं में से प्रत्येक पर hashCode
विधि एक ही पूर्णांक परिणाम का उत्पादन होगा।
- यह आवश्यक नहीं है कि
equals(java.lang.Object)
विधि के अनुसार दो वस्तुएं असमान हों, फिर दो वस्तुओं में से प्रत्येक पर hashCode
विधि को कॉल करने से अलग पूर्णांक परिणाम उत्पन्न हो जाएं। हालांकि, प्रोग्रामर को पता होना चाहिए कि असमान वस्तुओं के लिए अलग पूर्णांक परिणाम उत्पन्न करना हैशटेबल्स के प्रदर्शन में सुधार कर सकता है।
हैशकोड की तुलना केवल एक चीज है जो आप वहां करने की योजना बना रहे हैं? या बस कई कदमों में से एक? – Thilo
मैं इसका उपयोग करने की योजना नहीं बना रहा हूं, मैं सिर्फ इस विचार को फेंकना चाहता था क्योंकि यूनी में मेरे प्रशिक्षक ने बस "ऐसा नहीं किया" लेकिन क्यों समझाया नहीं जा सका। – k4kuz0