Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Java

हैश मैप और समवर्ती हैश मैप के बीच अंतर

जैसा कि हम जावा संग्रह में जानते हैं, डेटा रखने के लिए सबसे महत्वपूर्ण डेटा संरचना में से एक है। संग्रह में कई कार्यान्वयन होते हैं जैसे कि मानचित्र, सेट सूची आदि। जिसने इसे डेटा संग्रहण के लिए सबसे योग्य बना दिया और तदनुसार इसे हेरफेर किया क्योंकि इन कार्यान्वयनों ने न केवल डेटा संग्रहण को प्रभावी बनाया बल्कि डेटा को बहु-थ्रेडिंग वातावरण में संभालने की अनुमति भी दी।

संग्रह के अन्य सभी कार्यान्वयनों में हैश मैप महत्वपूर्ण संग्रहों में से एक है जो डेटा को कुंजी मूल्य जोड़ी में संग्रहीत करता है। मल्टी-थ्रेडिंग के संदर्भ में, समवर्ती संग्रह के रूप में ज्ञात संग्रह का एक और कार्यान्वयन है जो हैश मैप के गुणों के साथ-साथ मल्टी-थ्रेडिंग वातावरण में डेटा को संभालने की भी अनुमति देता है।

इन दोनों संग्रहों के आंतरिक कार्यान्वयन के आधार पर निम्नलिखित महत्वपूर्ण अंतर हैं।

<वें शैली="पाठ्य-संरेखण:केंद्र;">ConcurrentHashMap
Sr. नहीं. कुंजी HashMap
1 Concurrency जैसा कि ऊपर उल्लेख किया गया है, इस संग्रह के दोनों के बीच मुख्य अंतर समवर्ती है, हैश मैप कोई थ्रेड सुरक्षित नहीं है। दूसरी ओर ConcurrentHashMap थ्रेड सुरक्षित है और बहु-थ्रेडेड वातावरण में उपयोग के लिए उपयुक्त है।
2 कार्यान्वयन Hashmap और ConcurrentHashmap को आंतरिक रूप से अलग-अलग तरीके से लागू किया जाता है क्योंकि हैशमैप में अवधारणा नहीं होती है यदि इसके स्टोरेज मैकेनिज्म में सेगमेंट और डेटा को की वैल्यू पेयर में स्टोर करता है। दूसरी ओर Concurerent HashMap का कार्यान्वयन इस तरह से कि समवर्तीHashMap प्रारंभ होने पर खंडों की संख्या [डिफ़ॉल्ट 16] में विभाजित हो। ConcurrentHashMap इन खंडों को समवर्ती रूप से एक्सेस करने के लिए समान संख्या (16) थ्रेड्स की अनुमति देता है ताकि प्रत्येक थ्रेड उच्च संगामिति के दौरान एक विशिष्ट सेगमेंट पर काम करे।
3 पेश किया गया HashMap JDK 1.2 में पेश किया गया है दूसरी ओर ConcurrentHashMap सन माइक्रोसिस्टम द्वारा JDK 1.5 में पेश किया गया है।
4 अशक्त अनुमति जैसा कि ऊपर बताया गया है, HashMap के मामले में कुंजी और मानों के लिए शून्य मानों की अनुमति है। दूसरी ओर समवर्ती हैश मैप में न तो कुंजी के लिए और न ही मूल्य के लिए शून्य मान की अनुमति नहीं है और यदि ऐसी प्रविष्टि के लिए प्रयास किया जाता है तो NullPointerException कह कर रन-टाइम अपवाद प्राप्त करें।
5 सिंक्रनाइज़ेशन HashMap समवर्ती HashMap से बेहतर है क्योंकि कोई सिंक्रनाइज़ेशन नहीं है। दूसरी ओर ConcurrentHashMap, पूरे मानचित्र को समवर्ती स्तर के आधार पर अलग-अलग विभाजन में विभाजित करके और संपूर्ण मानचित्र को लॉक करने के बजाय केवल विशेष भाग को लॉक करके थ्रेड-सुरक्षा प्राप्त की जाती है।
6 प्रदर्शन हम हैशमैप को Collections.synchornizedMap(HashMap) पर लपेटकर सिंक्रनाइज़ कर सकते हैं जो एक संग्रह लौटाएगा जो हैशटेबल के लगभग बराबर है, जहां मानचित्र पर प्रत्येक संशोधन ऑपरेशन मानचित्र ऑब्जेक्ट पर लॉक है। जैसा कि ऊपर बताया गया है, Collections.SynchronizedMap() विधि का उपयोग करने की आवश्यकता है तो ConcurrentHashMap() एक बेहतर विकल्प है क्योंकि ConcurrentHashMap अभी भी एक से अधिक थ्रेड को मानचित्र तक पहुंचने का मौका देता है जिससे प्रदर्शन में सुधार होता है।

  1. जावा में EnumMap और HashMap के बीच अंतर

    EnumMap JDK5 में पेश किया गया है। यह Enum को मानचित्र में कुंजी के रूप में उपयोग करने के लिए डिज़ाइन किया गया है। यह मानचित्र इंटरफ़ेस का कार्यान्वयन भी है। EnumMap की सभी कुंजी समान एनम प्रकार की होनी चाहिए। EnumMap में, कुंजी शून्य नहीं हो सकती है और कोई भी यह NullPointerException को फेंक देगा। ज

  1. गो और जावा के बीच अंतर.

    जाओ गो एक प्रक्रियात्मक प्रोग्रामिंग भाषा है। पैकेज का उपयोग करके कार्यक्रमों को इकट्ठा किया जाता है। यह गतिशील भाषाओं के समान पर्यावरण अपनाने वाले पैटर्न का समर्थन करता है। जावा जावा एक ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग लैंग्वेज है। जावा शांत तेज, विश्वसनीय और सुरक्षित है। यह सबसे व्यापक रूप से उपयो

  1. जावा में समवर्ती हैश मैप और सिंक्रोनाइज़्ड हैशमैप के बीच अंतर

    समवर्ती हैशमैप एक वर्ग है जिसे jdk1.5 में पेश किया गया था। समवर्ती हैश मानचित्र मानचित्र को जोड़ते या अद्यतन करते समय केवल बकेट स्तर पर ताले लागू करता है जिसे खंड कहा जाता है। तो, एक समवर्ती हैश मानचित्र मानचित्र पर समवर्ती पढ़ने और लिखने के संचालन की अनुमति देता है। सिंक्रोनाइज़्ड हैशमैप (Collect