क्या होगा सबसे तेज और अधिक मजबूत की तरहकई जावा स्ट्रिंग से एक हैश बनाना वस्तुओं
public abstract String hash(String[] values);
एक विधि को लागू करने के लिए जिस तरह से (विशिष्टता के संदर्भ में) values[]
सरणी 100 से 1000 के सदस्यों, एक से प्रत्येक है जो कुछ दर्जन वर्णों के साथ, और विधि को प्रत्येक बार values[]
सरणी पर लगभग 10,000 गुना/सेकंड चलाने की आवश्यकता होती है।
StringBuilder
बफर का उपयोग करके एक लंबी स्ट्रिंग का निर्माण करना चाहिए और फिर बफर सामग्री पर एक हैश विधि लागू की जानी चाहिए, या values[]
से प्रत्येक स्ट्रिंग के लिए हैश विधि का आह्वान करना बेहतर है?
स्पष्ट रूप से टकराव से बचने के लिए कम से कम 64 बिट्स (उदाहरण के लिए, एमडी 5) की हैश की आवश्यकता है, लेकिन क्या एक ही गुणवत्ता पर कुछ भी आसान और तेज़ किया जा सकता है?
उदाहरण के लिए,
के बारे मेंpublic String hash(String[] values)
{
long result = 0;
for (String v:values)
{
result += v.hashCode();
}
return String.valueOf(result);
}
वह दृष्टिकोण उचित दिखता है।आप किसी क्षेत्र में हैश मान को स्टोर करना चाहते हैं, इसलिए जब भी आप इसे स्ट्रिंग [] में बदलते हैं, तब तक आपको हर बार इसे फिर से गणना करने की आवश्यकता नहीं होती है। –
निश्चित रूप से, लेकिन प्रश्न में आवेदन में मूल्य [] सरणी हर समय बदल जाती है। :-) – PNS