मेरे पास एक जावा प्रशंसा है जिसमें मैं स्ट्रिंग के लिए long
आईडी उत्पन्न करना चाहता हूं (neo4j में उन तारों को स्टोर करने के लिए)। डेटा डुप्लिकेशन से बचने के लिए, मैं long
पूर्णांक में संग्रहीत प्रत्येक स्ट्रिंग के लिए एक आईडी उत्पन्न करना चाहता हूं, जो प्रत्येक स्ट्रिंग के लिए अद्वितीय होना चाहिए। मैं उसे कैसे कर सकता हूँ ?मैं स्ट्रिंग का लंबा हैश कैसे उत्पन्न कर सकता हूं?
उत्तर
long
में 64 बिट्स हैं। लंबाई 9 के String
में 72 बिट्स हैं। pigeon hole principle से - आपको 9 वर्णों के लंबे तारों के लिए long
पर अनूठा हैशिंग नहीं मिल सकता है।
आप अभी भी एक long
हैश चाहते हैं: तुम बस String->int
, hash1()
और hash2()
के लिए दो मानक [! विभिन्न] हैश फंक्शन लेने के लिए और गणना कर सकते हैं: बहुत अच्छी हैश hash(s) = 2^32* hash1(s) + hash2(s)
क्यों आप स्ट्रिंग के hashcode()
फ़ंक्शन को नहीं देखते हैं, और इसके बजाय लंबे मानों का उपयोग करने के लिए इसे अपनाने के लिए?
बीटीडब्ल्यू। यदि प्रत्येक स्ट्रिंग के लिए एक अद्वितीय आईडी बनाने का कोई तरीका था, तो आपको एक संपीड़न एल्गोरिदम मिलेगा जो प्रत्येक स्ट्रिंग को 8 बाइट्स (परिभाषा से संभव नहीं) में पैक करने में सक्षम होगा।
कई जवाब नहीं है, कोशिश निम्नलिखित:
http://stackoverflow.com/questions/415953/generate-md5-hash-in-javaसंपादित करें: हटा, मैं नहीं छूटा हैlong
आवश्यकता। मी culpa।- http://en.wikipedia.org/wiki/Perfect_hash_function
या, जैसा कि पहले का सुझाव दिया, सूत्रों का कहना है की जाँच करें।
पीएस। स्ट्रिंग्स के शब्दकोश को बनाए रखने के लिए एक और तकनीक है: चूंकि आपको 2 स्ट्रिंग्स जल्द ही प्राप्त करने की संभावना नहीं है, तो आप सही मैपिंग कर सकते हैं। ध्यान दें कि मैपिंग भी एक बड़ी बाधा बन सकती है।
इस कोड की गणना करेगा:
String s = "some string";
long hash = UUID.nameUUIDFromBytes(s.getBytes()).getMostSignificantBits();
- 1. मैं पर्ल में हैश का हैश कैसे बना सकता हूं?
- 2. मैं जावा ऑब्जेक्ट से एचटीएमएल कैसे उत्पन्न कर सकता हूं?
- 3. मैं विम में एक GUID कैसे उत्पन्न कर सकता हूं?
- 4. मैं जावास्क्रिप्ट शैली हैश एक्सेस कैसे प्राप्त कर सकता हूं?
- 5. मैं स्ट्रिंग/बफर का अक्षर कैसे प्राप्त कर सकता हूं?
- 6. मैं स्ट्रिंग का nth चरित्र कैसे प्राप्त कर सकता हूं?
- 7. मैं C++ का उपयोग कर int में स्ट्रिंग कैसे कर सकता हूं?
- 8. मैं Winform नियंत्रण से बिटमैप कैसे उत्पन्न कर सकता हूं?
- 9. मैं एक .pfx फ़ाइल कैसे उत्पन्न कर सकता हूं?
- 10. मैं पीडीएफएलएटीएक्स से पीडीएफ इंडेक्स कैसे उत्पन्न कर सकता हूं?
- 11. मैं गतिशील जावास्क्रिप्ट कैसे उत्पन्न कर सकता हूं?
- 12. मैं सी # का उपयोग कर SQL सर्वर डेटाबेस में हैश कैसे संग्रहीत कर सकता हूं?
- 13. मैं पायथन में यादृच्छिक संख्या कैसे उत्पन्न कर सकता हूं?
- 14. मैं बिना फ्रेम के जावाडॉक कैसे उत्पन्न कर सकता हूं?
- 15. क्या मैं डेटा पहचान के लिए एमडी 5 हैश का हिस्सा उपयोग कर सकता हूं?
- 16. मैं लाइनों पर एक लंबा समीकरण कैसे तोड़ सकता हूं?
- 17. पासपोर्ट.जेएस का उपयोग कर मैं वर्तमान हैश स्थान पर कैसे लौट सकता हूं?
- 18. मैं हैश कुंजी को एकाधिक मान कैसे सौंप सकता हूं?
- 19. मैं आसानी से (जावा में) मास्क स्ट्रिंग से फ़ाइल नाम कैसे उत्पन्न कर सकता हूं?
- 20. मैं हैश के लिए पैथोलॉजिकल कुंजी कैसे बना सकता हूं?
- 21. मैं हैश के हैश से मूल्यों को कैसे मैप (और सॉर्ट) कर सकता हूं?
- 22. मैं postgresql में पूरी तालिका का हैश कैसे प्राप्त कर सकता हूं?
- 23. मैं जावा का उपयोग कर जावडॉक्स कैसे उत्पन्न कर सकता हूं?
- 24. मैं SWIG का उपयोग कर सी ++ एपीआई पर सी रैपर कैसे उत्पन्न कर सकता हूं?
- 25. मैं 'godoc` का उपयोग कर HTML दस्तावेज़ कैसे उत्पन्न कर सकता हूं?
- 26. मैं पर्ल में सेट का प्रतिनिधित्व कैसे कर सकता हूं?
- 27. मैं एक्सएसएलटी में स्ट्रिंग ऑपरेशंस कैसे कर सकता हूं?
- 28. मैं चर में जटिल स्ट्रिंग कैसे कर सकता हूं?
- 29. मैं मानचित्र में [[16] बाइट] [] स्ट्रिंग कैसे बना सकता हूं?
- 30. मैं इस फ्लास्क ऐप का परीक्षण कैसे कर सकता हूं?
क्या आप स्ट्रिंग्स का हैश नहीं प्राप्त कर सकते थे और उन्हें नियो में स्टोर करने से पहले लंबे समय तक कास्ट कर सकते थे? – Marthin
आप "सभी तारों के लिए अद्वितीय" प्राप्त नहीं कर सकते हैं - लंबे समय तक 64 बिट्स हैं, लंबाई 9 की एक स्ट्रिंग में 72 बिट्स हैं, कुछ स्ट्रिंग्स होने चाहिए जो एक ही लंबे – amit
पर धोए जाएंगे, क्योंकि आप विशिष्टता प्राप्त नहीं कर सकते हैं, क्योंकि वहां हैं अनगिनत कई तार और केवल अंतहीन कई लंबे समय तक। क्या आप अधिक विशेष रूप से वर्णन कर सकते हैं कि आप क्या खोज रहे हैं? – templatetypedef