जावा मधील हॅशमॅप आणि हॅशटेबल दरम्यान फरक

लेखक: Laura McKinney
निर्मितीची तारीख: 2 एप्रिल 2021
अद्यतन तारीख: 5 मे 2024
Anonim
जावा मधील हॅशमॅप आणि हॅशटेबल दरम्यान फरक - तंत्रज्ञान
जावा मधील हॅशमॅप आणि हॅशटेबल दरम्यान फरक - तंत्रज्ञान

सामग्री


हॅशमॅप आणि हॅशटेबल हे दोन्ही ए चे प्रतिनिधित्व करण्यासाठी वापरले जातात ऑब्जेक्ट्सचा समूह मध्ये प्रतिनिधित्व आहेत जोडी. प्रत्येक जोडी म्हणतात प्रवेश ऑब्जेक्ट. द संग्रह नोंदी हॅशमॅप आणि हॅशटेबलच्या ऑब्जेक्टद्वारे संदर्भित केल्या जातात. संग्रहातील की अद्वितीय किंवा विशिष्ट असणे आवश्यक आहे. हॅशमॅप आणि हॅशटेबलमध्ये फरक आहे हॅशमॅप विशेषतः नकाशा इंटरफेसची अंमलबजावणी करते, तर हॅशटेबल शब्दकोश वर्ग (लेगसी वर्ग) वाढविते जो नकाशा इंटरफेसच्या अंमलबजावणीसाठी पुन्हा तयार केला जातो. दुसरा महत्त्वाचा फरक म्हणजे हॅशमॅपची ऑब्जेक्ट्स आहेत बिनचक्र हॅशटेबल ची ऑब्जेक्ट्स आहेत समक्रमित.

हॅशमॅप आणि हॅशटेबल दरम्यान काही अधिक फरक जाणून घेण्यासाठी खाली दर्शविलेले तुलना चार्टवर पाहूया.

  1. तुलना चार्ट
  2. व्याख्या
  3. मुख्य फरक
  4. समानता
  5. निष्कर्ष

तुलना चार्ट

तुलनासाठी आधारहॅशमॅपहॅशटेबल
अंमलबजावणी / वाढवाहॅशमॅप क्लास मॅप इंटरफेसची अंमलबजावणी करतो आणि अ‍ॅबस्ट्रॅक्टमॅप क्लास वाढवितो.हॅशटेबल डिक्शनरी लेगसी क्लासचे विस्तारित परंतु, ते पुन्हा इंजिनियर केले गेले आहे आणि आता ते मॅप इंटरफेस देखील लागू करते.
सिंक्रोनाइझेशनहॅशमॅप असंयंत्रित आहे, आणि म्हणूनच, हॅशमॅप ऑब्जेक्ट सुरक्षित थ्रेड केलेले नाही.हॅशटेबल सिंक्रोनाइझ केले आहे आणि म्हणूनच हॅशटेबलचा ऑब्जेक्ट थ्रेड सेफ आहे.
की / मूल्यएक की एकदाच शून्य परत करू शकते, परंतु मूल्य शून्य वेळेस परत करू शकते.एक की की नलला परत करू शकत नाही कारण हॅश कोड प्राप्त करण्यासाठी वापरली जाते जी हॅश टेबलची अनुक्रमणिका म्हणून वापरली जाईल किंवा व्हॅल्यू नलला परत करू शकत नाही.
डीफॉल्ट प्रारंभिक क्षमताहॅशमॅपची डीफॉल्ट प्रारंभिक क्षमता 16 आहे.हॅशटेबलची डीफॉल्ट प्रारंभिक क्षमता 11 आहे.
ट्रॅव्हर्सिंगहॅशमॅप इटेटरद्वारे ट्रॅव्हर्ड आहे.जसे मॅप क्लास हॅशटेबल देखील थेट ट्रॅव्हर्सिंगसाठी इटरला समर्थन देत नाही आणि म्हणूनच तो गणकाचा वापर करतो.


हॅशमॅप ची व्याख्या

हॅशमॅप हा एक वर्ग आहे जो लागू करतो नकाशा इंटरफेस आणि वाढवते अ‍ॅबस्ट्रॅक्ट मॅप वर्ग हॅश टेबल वापरतो. हॅशमॅपचे ऑब्जेक्ट संग्रह / संचाचा संदर्भ देते जोडी जिथे प्रत्येक की एका विशिष्ट मूल्यावर मॅप केली जाते. संग्रहामधील की त्या मूल्य परत मिळवण्यासाठी वापरल्या गेलेल्या अद्वितीय असणे आवश्यक आहे. दुसरीकडे, संग्रहातील मूल्ये डुप्लिकेट केली जाऊ शकतात. हॅशमॅप क्लासची घोषणा आणि हॅशमॅपक्लासचे बांधकाम करणारे खालीलप्रमाणे आहेतः

/ * के की चे प्रतिनिधित्व करते आणि व्ही मूल्य * / वर्ग हॅशमॅप प्रस्तुत करते / * हॅशमॅप वर्गाचे बांधकामकर्ते * / हॅशमॅप () हॅशमॅप (नकाशा <?? के,? व्ही> मी वाढवितो) हॅशमॅप (अंत क्षमता) हॅशमॅप (अंत क्षमता, फ्लोट फिल रेशियो)

प्रथम कन्स्ट्रक्टर डिफॉल्ट कन्स्ट्रक्टर आहे जो 16 च्या डीफॉल्ट क्षमतेसह हॅशमॅपच्या रिकाम्या ऑब्जेक्टची आरंभ करतो आणि 0.75 च्या डीफॉल्ट फिल रेशियो. दुसरा कंस्ट्रक्टर एम च्या व्हॅल्यूसह हॅश मॅपला इनिशियलाइज करतो. तिसरा कन्स्ट्रक्टर सुरुवातीच्या क्षमतेसह हॅश मॅप तयार करतो जो युक्ति "क्षमता" मध्ये प्रदान केलेल्या मूल्याशी संबंधित आहे. चौथा कन्स्ट्रक्टर पॅरामीटर्समध्ये प्रदान केलेल्या क्षमता आणि फिल रेशोसह हॅश नकाशाला आरंभ करतो. आता हॅश नकाशामध्ये नोंदी कशी फीड करावी हे शिकू.


हॅशमॅप एचएम = नवीन हॅशमॅप (); एचएम.पुट ("अजय", 275); एचएम.पुट ("विजय", 250); एचएम.पुट ("जॉनी", 150); एचएम.पुट ("जॉर्डन", 200); सिस्टम.आउट.एलएन (एचएम); / * आउटपुट * / {विजय = 250, जॉनी = 150, अजय = 275, जॉर्डन = 200

वरील कोडमध्ये आपण पाहू शकता की मी रिकामी हॅशमॅप ऑब्जेक्ट बनविला आहे हं डीफॉल्ट प्रारंभिक क्षमता आणि डीफॉल्ट भरणोत्तर सह. मग मी व्हॅल्यूची किल्ली मॅप करणार्‍या पुट (के, व्ही) पद्धतीचा वापर करून हॅश नकाशामध्ये चार प्रविष्ट्या घातल्या. आपण नोंदवू शकता की प्रविष्ट्या आपण त्यांना भरत असलेल्या क्रमाने संपादित केल्या जात नाहीत कारण समाकलन ऑर्डर निश्चित केलेली नाही. आता, आपल्याकडे आधीपासूनच नोंद आहे अशा एका घटकाचा विचार करा हॅश नकाशामध्ये आणि त्यानंतर आपण पुट (के 1, व्ही 5) समाविष्ट करण्याचा प्रयत्न करा, म्हणजे आपण भिन्न की मूल्यासह समान की मॅप करण्याचा प्रयत्न करीत आहात. नंतर पुट मेथड जुन्या व्हॅल्यू व्ही 1 ला नवीन व्हॅल्यू व्ही 2 सह बदलवेल आणि जुने व्हॅल्यू व 1 परत करेल, अन्यथा, जर आम्ही कधीही कीचे मूल्य बदलण्याचा प्रयत्न केला नाही तर त्या पध्दतीमुळे त्या की साठी नल रिटेल

हॅशटेबलची व्याख्या

हॅशटेबल हा एक वर्ग आहे जो विस्तारित करतो शब्दकोश क्लास जो एक वारसा वर्ग आहे आणि अंमलबजावणीसाठी नूतनीकरण केले आहे नकाशा इंटरफेस. हॅशटेबल त्याच्या डेटा स्ट्रक्चर म्हणून हॅश टेबलचा वापर करते. हॅशटेबल हॅशमॅप प्रमाणेच आहे कारण येथे देखील हॅशटेबलच्या ऑब्जेक्टच्या नोंदी संकलनाचा संदर्भ आहे जिथे प्रत्येक प्रविष्टीची जोड आहे . संग्रहामधील सर्व की दुसरीकडे अद्वितीय असणे आवश्यक आहे, मूल्ये डुप्लिकेट केली जाऊ शकतात. कळा विशेषत: हॅश कोड मूल्य प्राप्त करण्यासाठी वापरली जातात जी निर्देशांक ठरवते, जेथे जोडी हॅश टेबलमध्ये ठेवली जाईल. हॅश टेबलमध्ये, की किंवा व्हॅल्यू शून्य पॉईन्टर परत करू शकत नाहीत. चला हॅशटेबल क्लास आणि हॅशटेबल क्लास कन्स्ट्रक्टर्सची घोषणा पाहू.

/ * के की निर्दिष्ट करते आणि व्ही की * / वर्ग हॅशटेबल की संबंधित मूल्य निर्दिष्ट करते / * हॅशटेबल * / हॅशटेबल () हॅशटेबल (इंट आकार) हॅशटेबल (इंट आकार, फ्लोट फिल रेशियो) हॅशटेबल (नकाशा <?? के,? व्ही> मीटर वाढवितो) चे बांधकाम करणारे

वरील कोडमध्ये प्रथम कन्स्ट्रक्टर डिफॉल्ट कन्स्ट्रक्टर आहे जो वर्ग हॅशटेबलचा रिक्त ऑब्जेक्ट तयार करतो, त्याचा डीफॉल्ट आकार 11 आहे आणि डीफॉल्ट फिल रेशियो 0.75 आहे. दुसरा कन्स्ट्रक्टर आकार “पॅरामीटर” मध्ये प्रदान केलेल्या मूल्याशी संबंधित आकारासह हॅश टेबल बनवितो. तिसरा कन्स्ट्रक्टर पॅरामीटरमध्ये प्रदान केलेल्या आकार आणि फिल रेशोसह हॅश टेबल तयार करतो. चौथा कन्स्ट्रक्टर हॅश टेबलची किंमत एम सह प्रारंभ करते. आता आपण हे कसे समाविष्ट करायचे ते शिकू हॅश टेबल मध्ये जोडी.

हॅशटेबल एचटी = नवीन हॅशटेबल (); एचटी.पुट (नवीन हॅशकोड (2), 275); एचटी.पुट (नवीन हॅशकोड (12), 250); एचटी.पुट (नवीन हॅशकोड (16), 150); एचटी.पुट (नवीन हॅशकोड (8), 200); सिस्टम.आउट.एलएन (एचटी); / * आउटपुट * / {12 = 250, 16 = 150,2y = 275, 8 = 200

वरील कोडमध्ये मी हॅशटेबलची रिकामी ऑब्जेक्ट तयार केली आणि पुट () मेथड वापरून चार एंट्रीस घातल्या. इनसेट पुथ मेथड मला हॅशकोड () म्हणतात जे कॉम्प्यूट करते आणि हॅश कोड व्हॅल्यू रिटर्न करतात जे एंट्री ऑब्जेक्टसाठी इंडेक्स व्हॅल्यू म्हणून काम करतात. जसे आपण पाहू शकता की मी हॅश टेबलच्या आकाराचा उल्लेख केला नाही, तो डीफॉल्टनुसार तो 11 होईल. येथे देखील, इन्सर्ट ऑर्डर संरक्षित केली जात नाही आणि म्हणून, जेव्हा एड नोंदी अनुक्रमात दिसत नाहीत तेव्हा ते दिले गेले.

  1. हॅशमॅप उपकरणे नकाशा इंटरफेस आणि एक अमूर्त वर्ग वाढविते, अ‍ॅबस्ट्रॅक्ट मॅप तर, हॅशटेबल अमूर्त वर्ग वाढविते शब्दकोश, जे लेगसी वर्ग देखील आहे, नंतर अंमलबजावणीसाठी नवीन तंत्रज्ञानाचा नकाशा इंटरफेस.
  2. हॅशमॅप ऑब्जेक्ट आहे बिनचक्र म्हणजेच एकाधिक थ्रेड एकाच वेळी त्यावर कार्य करू शकतात आणि म्हणूनच, त्यात धागा सुरक्षित नाही. दुसरीकडे, हॅशटेबलच्या ऑब्जेक्ट्स आहेत समक्रमित म्हणजेच जर धागा हॅशटेबलच्या ऑब्जेक्टवर ऑपरेट करू इच्छित असेल तर त्या ऑब्जेक्टवर लॉक घेणे आवश्यक आहे जेणेकरून इतर धागा त्या ऑब्जेक्टमध्ये प्रवेश करू शकणार नाही आणि म्हणूनच तो धागा सुरक्षित आहे.
  3. हॅशमॅप मध्ये की परत येऊ शकते फक्त एकदाच शून्य, आणि मूल्य परत येऊ शकते निरर्थक वेळा. दुसरीकडे, की कधीही नल परत करू शकत नाही कारण हॅश कोड मूल्य प्राप्त करण्यासाठी वापरले जाते जे संचयित करण्यासाठी अनुक्रमणिका म्हणून वापरले जाते. जोडी आणि कोणतेही मूल्य शून्य परत करू शकते.
  4. हॅशमॅप वर्गातील हॅश टेबलची डीफॉल्ट क्षमता आहे 16 हॅशटेबल मध्ये हॅश टेबलची मुलभूत क्षमता आहे 11.
  5. Iterator हॅशमॅप नोंदी ओलांडू शकतात. दुसरीकडे, हॅशटेबल थेट इटेटरला समर्थन देत नाही आणि म्हणूनच सामान्यत: गणक हॅशटेबल मध्ये नोंदी पाठवण्यासाठी वापरली जाते.

समानता:

  • हॅशमॅप आणि हॅशटेबल दोन्ही डेटा स्ट्रक्चरचा वापर करतात हॅश टेबल.
  • हॅशमॅप आणि हॅशटेबल दोन्ही उपकरणे नकाशा इंटरफेस
  • अंतर्भूत ऑर्डर संरक्षित नाही हॅशमॅप आणि हॅशटेबल या दोन्हीमध्ये आणि कळा वापरून प्राप्त केलेल्या हॅश कोडवर आधारित.
  • हॅशमॅप आणि हॅशटेबलमध्ये की असणे आवश्यक आहे अद्वितीय तर, मूल्ये असू शकतात डुप्लिकेट केलेले.
  • हॅशमॅप आणि हॅशटेबल दोन्ही असू शकतात विषम वस्तू कळा आणि मूल्ये दोन्हीसाठी.
  • हॅशमॅप आणि हॅशटेबल, दोन्ही अवजारे अनुक्रमणीय आणि क्लोनेबल संवाद पण नाही, यादृच्छिक प्रवेश.
  • हॅशमॅप आणि हॅशटेबल दोघांमध्ये डीफॉल्ट फिल रेशो आहे 0.75.
  • हॅशमॅप आणि हॅशटेबल दोन्ही पुनर्प्राप्तीसाठी सर्वोत्तम आहेत किंवा शोधत आहे ऑपरेशन्स.

निष्कर्ष:

हॅशमॅप कार्यक्षमतेत अधिक चांगले आहे कारण त्याचे ऑब्जेक्ट्स सिंचन नसलेल्या आहेत आणि एकाधिक थ्रेड एकाच वेळी ऑपरेट करू शकतात आणि म्हणूनच ते हॅशटेबलपेक्षा वेगवान आहे.