में मशीनों में जावा और string.hashCode() स्थिरता। मैंने similar question को string.GetHashCode()
विधि .NET में विधि के लिए कहा है। तब से, मैंने सीखा है कि हम बुटी-इन प्रकारों के लिए हैश कोड के निहित कार्यान्वयन पर भरोसा नहीं कर सकते हैं, अगर हम इसे विभिन्न मशीनों में उपयोग करना चाहते हैं। इसलिए, मैं यह सोचते हैं हूँ String.hashCode()
के जावा कार्यान्वयन भी अलग हार्डवेयर विन्यास भर में अस्थिर है और VMs भर में अलग तरीके से व्यवहार कर सकते हैं (विभिन्न वीएम कार्यान्वयन मत भूलना)क्लस्टर
वर्तमान में हम सुरक्षित रूप से एक में एक स्ट्रिंग को बदलने के लिए एक तरह से चर्चा कर रहे हैं कि हैशिंग द्वारा जावा में संख्या, लेकिन हैश एल्गोरिदम क्लस्टर के विभिन्न नोड्स में स्थिर होना चाहिए, और मूल्यांकन करने के लिए तेज़ होना चाहिए, क्योंकि उपयोग की उच्च आवृत्ति होगी। मेरी टीम के साथी मूल hashCode
विधि पर जोर दे रहे हैं, और मुझे एक और दृष्टिकोण पर पुनर्विचार करने के लिए कुछ उचित तर्कों की आवश्यकता होगी। वर्तमान में, मैं केवल मशीन कॉन्फ़िगरेशन (x86 और x64) के बीच मतभेदों के बारे में सोच सकता हूं, संभवतः मशीनों के आधार पर मशीनों के आधार पर कुछ मशीनों (शायद हमारे मामले में लागू) और बाइट-ऑर्डर मतभेदों पर JVM के विभिन्न विक्रेताओं के बारे में सोच सकते हैं, एल्गोरिदम मशीन पर निर्भर करता है चलाते हैं। बेशक, चरित्र एन्कोडिंग शायद भी माना जा सकता है।
हालांकि ये सभी चीजें मेरे दिमाग में आती हैं, मैं उनमें से किसी एक में पर्याप्त कारण होने के लिए 100% निश्चित नहीं हूं, और मैं इस क्षेत्र में आपकी विशेषज्ञता और अनुभव की सराहना करता हूं। इससे मुझे एक कस्टम हैशिंग एल्गोरिदम लिखने के पक्ष में मजबूत तर्क बनाने में मदद मिलेगी। इसके अलावा, मैं पर सलाह देने पर सलाह देता हूं कि इसे लागू करते समय क्या करें।
स्ट्रिंग हैशकोड किसी भी जावा प्लेटफॉर्म पर अच्छी तरह से परिभाषित और समान है। – ZhongYu
http://stackoverflow.com/questions/785091/consistency-of-hashcode-on-a-java-string – zch
@ zhong.j.yu आप मान रहे हैं [JRockit] (http://www.oracle.com /technetwork/middleware/jrockit/overview/index.html) और [आईबीएम जेवीएम] (http://publib.boulder.ibm।com/infocenter/java7sdk/v7r0/index.jsp? topic =% 2Fcom.ibm.java.lnx.70.doc% 2 फ़्यूसर% 2Fjava_jvm.html) के पास स्ट्रिंग # हैशकोड' के लिए समान कार्यान्वयन है। –