मेरे पास एक विशाल डेटा सेट पर काम करने वाला एक प्रोग्राम है। ऑब्जेक्ट को कंटेनर में ऑब्जेक्ट्स की तलाश रखने के बाद से हैश लागू कंटेनर पर ऑब्जेक्ट्स सबसे अच्छी तरह से संग्रहीत हैं।जावा: हैशसेट बनाम हैश मैप
पहला विचार हैश मैप का उपयोग करना था क्योंकि इस कंटेनर के तरीके प्राप्त करने और निकालने के लिए मुझे आवश्यक उपयोगों के लिए अधिक उपयुक्त है।
लेकिन, मुझे देखने के लिए HashMap के उपयोग सुंदर स्मृति उपभोज्य जो एक बड़ी समस्या है है आया था, इसलिए मैंने सोचा HashSet का उपयोग करने जा बेहतर होगा क्योंकि यह केवल <E>
का उपयोग करता है, और तत्व प्रति नहीं <K,V>
, लेकिन जब मैं को देखा कार्यान्वयन मैंने सीखा है कि यह अंतर्निहित हैश मैप का उपयोग करता है! इसका मतलब है कि यह किसी भी स्मृति को बचा नहीं होगा!
तो यह मेरे सवालों का है:
- मेरे सभी मान्यताओं सच हैं?
- हैश मैप मेमोरी बर्बाद है? अधिक विशेष रूप से, प्रत्येक प्रविष्टि के लिए इसका ओवरहेड क्या है?
- हैशसेट बस हैश मैप के रूप में अपमानजनक है?
क्या कोई अन्य हैश आधारित कंटेनर है जो काफी कम उपभोग्य सामग्रियों का होगा?
अद्यतन
टिप्पणी में अनुरोध के रूप में मैं अपने कार्यक्रम के बारे में थोड़ा विस्तार होगा, HashMap अन्य वस्तुओं की एक जोड़ी है, और कुछ संख्यात्मक मान का मतलब है - एक float- गणना से उन्हें। जिस तरह से यह उनमें से कुछ निकालता है और नए जोड़े में प्रवेश करता है। एक जोड़ी को देखते हुए इसे यह सुनिश्चित करने की ज़रूरत है कि यह इस जोड़ी को पकड़ न सके या इसे हटा दें। मानचित्रण को फ्लोट मान या जोड़ी ऑब्जेक्ट के hashCode
का उपयोग करके किया जा सकता है।
इसके अतिरिक्त जब मैं कहते हैं कि "विशाल डेटा सेट" मैं के बारे में ~ 4 * 10^9 वस्तुओं
के तुलनित्र के रूप में करें, आपकी धारणाएं क्या हैं? – SMA
* जो एक बड़ी समस्या है *: है ना? क्या आपने माप लिया है और सिद्ध किया है कि आपके उपयोगकेस में हैशसेट का उपयोग करके बहुत अधिक स्मृति का उपभोग किया गया है? उपयोग-मामले क्या है? –
@almasshaikh मेरी धारणाएं मेरी पोस्ट में लिखी गई सभी चीजें हैं और विशेष रूप से प्रश्न जो निम्नलिखित हैं ... – petric