ஜாவாவில் ஹேஷ்மேப் மற்றும் ஹேஸ்டேபிள் இடையே வேறுபாடு

நூலாசிரியர்: Laura McKinney
உருவாக்கிய தேதி: 2 ஏப்ரல் 2021
புதுப்பிப்பு தேதி: 5 மே 2024
Anonim
SynchronizedHashMap Vs ConcurrentHashMap | ConcurrentHashMap vs Synchronized HashMap
காணொளி: SynchronizedHashMap Vs ConcurrentHashMap | ConcurrentHashMap vs Synchronized HashMap

உள்ளடக்கம்


ஹாஷ்மேப் மற்றும் ஹேஸ்டேபிள் இரண்டும் ஒரு குறிக்க பயன்படுத்தப்படுகின்றன பொருள்களின் குழு அவை குறிப்பிடப்படுகின்றன ஜோடி. ஒவ்வொரு ஜோடி அழைக்கப்படுகிறது நுழைவு பொருள். தி சேகரிப்பு உள்ளீடுகளை ஹாஷ்மேப் மற்றும் ஹேஸ்டேபிள் ஆகியவற்றின் பொருளால் குறிப்பிடப்படுகிறது. தொகுப்பில் உள்ள விசைகள் தனித்துவமானவை அல்லது தனித்துவமானவை. ஹாஷ்மேப்பிற்கும் ஹேஸ்டேபிள்க்கும் உள்ள வித்தியாசம் அதுதான் hashmap குறிப்பாக வரைபட இடைமுகத்தை செயல்படுத்துகிறது, அதேசமயம் ஹாஷ்டேபில் வரைபட இடைமுகத்தை செயல்படுத்த மறுசீரமைக்கப்பட்ட அகராதி வகுப்பை (மரபு வகுப்பு) நீட்டிக்கிறது. மற்ற முக்கியமான வேறுபாடு என்னவென்றால், ஹாஷ்மேப்பின் பொருள்கள் unsynchronized அதேசமயம், ஹேஸ்டேபிளின் பொருள்கள் ஒருங்கிணைக்கப்படும்.

ஹேஷ்மேப் மற்றும் ஹேஸ்டேபிள் இடையே இன்னும் சில வேறுபாடுகளை அறிய கீழே காட்டப்பட்டுள்ள ஒப்பீட்டு விளக்கப்படத்தைப் பார்ப்போம்.

  1. ஒப்பீட்டு விளக்கப்படம்
  2. வரையறை
  3. முக்கிய வேறுபாடுகள்
  4. ஒற்றுமைகள்
  5. தீர்மானம்

ஒப்பீட்டு விளக்கப்படம்

ஒப்பீட்டுக்கான அடிப்படைhashmapஹாஷ்டேபில்
செயல்படுத்த / விரிவாக்கஹாஷ்மேப் வகுப்பு வரைபட இடைமுகத்தை செயல்படுத்துகிறது மற்றும் ஒரு சுருக்க மேப் வகுப்பை விரிவுபடுத்துகிறது.அகராதி மரபு வகுப்பின் ஹேஸ்டேபிள் நீட்டிக்கப்படுகிறது, ஆனால், அது மீண்டும் வடிவமைக்கப்பட்டுள்ளது, இப்போது இது வரைபட இடைமுகத்தையும் செயல்படுத்துகிறது.
ஒத்திசைத்தலுக்குஹாஷ்மேப் ஒத்திசைக்கப்படவில்லை, எனவே, ஹாஷ்மேப் பொருள் பாதுகாப்பாக திரிக்கப்படவில்லை.ஹேஸ்டேபிள் ஒத்திசைக்கப்படுகிறது, எனவே, ஹேஸ்டேபிளின் பொருள் நூல் பாதுகாப்பானது.
விசைகள் / மதிப்புஒரு விசையானது பூஜ்யத்தை ஒரு முறை மட்டுமே திருப்பித் தர முடியும், ஆனால் ஒரு மதிப்பு எந்த நேரத்திலும் பூஜ்யத்தைத் தரும்.ஹாஷ் குறியீட்டைப் பெற ஹாஷ் அட்டவணையின் குறியீடாகப் பயன்படுத்தப்படுவதால் ஒரு விசையானது பூஜ்யத்தைத் திருப்பித் தர முடியாது, அல்லது ஒரு மதிப்பு பூஜ்யத்தைத் தர முடியாது.
இயல்புநிலை ஆரம்ப திறன்ஹாஷ்மேப்பின் இயல்புநிலை ஆரம்ப திறன் 16 ஆகும்.ஹேஸ்டேபிளின் இயல்புநிலை ஆரம்ப திறன் 11 ஆகும்.
பயணித்துஹாஷ்மேப் ஐட்டரேட்டரால் பயணிக்கிறது.வரைபட வகுப்பு ஹேஸ்டேபிள் போலவே பயணிப்பதற்காக ஐடரேட்டரை நேரடியாக ஆதரிக்காது, எனவே, இது கணக்கீட்டாளரைப் பயன்படுத்துகிறது.


ஹாஷ்மேப்பின் வரையறை

ஹாஷ்மேப் என்பது ஒரு வகுப்பாகும் வரைபடம் இடைமுகம் மற்றும் நீட்டிக்கிறது AbstractMap வகுப்பு ஹாஷ் அட்டவணையைப் பயன்படுத்துகிறது. ஹாஷ்மேப்பின் பொருள் ஒரு தொகுப்பு / தொகுப்பைக் குறிக்கிறது ஒவ்வொரு விசையும் ஒரு குறிப்பிட்ட மதிப்புக்கு மாற்றப்படும் ஜோடி. தொகுப்பில் உள்ள விசைகள் மதிப்பை மீட்டெடுக்கப் பயன்படுவதால் அவை தனித்துவமாக இருக்க வேண்டும். மறுபுறம், ஒரு தொகுப்பில் உள்ள மதிப்புகளை நகல் செய்யலாம். ஹாஷ்மேப் வகுப்பின் அறிவிப்பு மற்றும் ஹாஷ்மேப் கிளாஸின் கட்டமைப்பாளர்கள் பின்வருமாறு:

/ * K விசையை குறிக்கிறது, மற்றும் V மதிப்பை குறிக்கிறது * / வகுப்பு ஹாஷ்மேப் / * ஹாஷ்மேப் வகுப்பின் கட்டமைப்பாளர்கள் * / ஹாஷ்மேப் () ஹாஷ்மேப் (வரைபடம் <? கேவை நீட்டிக்கிறது ,? வி> மீ நீட்டிக்கிறது) ஹாஷ்மேப் (முழு திறன்) ஹாஷ்மேப் (முழு திறன், மிதவை நிரப்பு விகிதம்)

முதல் கட்டமைப்பாளர் இயல்புநிலை கட்டமைப்பாளராகும், இது இயல்புநிலை திறன் 16 மற்றும் இயல்புநிலை நிரப்பு விகிதம் 0.75 உடன் ஹாஷ்மேப்பின் வெற்று பொருளை துவக்குகிறது. இரண்டாவது கட்டமைப்பாளர் ஹாஷ் வரைபடத்தை மீ மதிப்புடன் துவக்குகிறார். மூன்றாவது கட்டமைப்பாளர் "திறன்" என்ற வாதத்தில் வழங்கப்பட்ட மதிப்புக்கு ஒத்த ஆரம்ப திறனுடன் ஒரு ஹாஷ் வரைபடத்தை உருவாக்குகிறார். நான்காவது கட்டமைப்பாளர் ஹாஷ் வரைபடத்தை ஒரு திறன் மற்றும் அளவுருக்களில் வழங்கப்பட்ட நிரப்பு விகிதத்துடன் துவக்குகிறார். ஹாஷ் வரைபடத்தில் உள்ளீடுகளை எவ்வாறு ஊட்டுவது என்பதை இப்போது கற்றுக்கொள்வோம்.


ஹாஷ்மாப் hm = புதிய ஹாஷ்மாப் (); hm.put ("அஜய்", 275); hm.put ("விஜய்", 250); hm.put ("ஜானி", 150); hm.put ("ஜோர்டான்", 200); System.out.ln (hm); / * வெளியீடு * / {விஜய் = 250, ஜானி = 150, அஜய் = 275, ஜோர்டான் = 200}

மேலே உள்ள குறியீட்டில், நான் ஒரு வெற்று ஹாஷ்மேப் பொருளை உருவாக்கியுள்ளதை நீங்கள் காணலாம் HM இயல்புநிலை ஆரம்ப திறன் மற்றும் இயல்புநிலை நிரப்பு விகிதத்துடன். மதிப்புக்கு விசையை வரைபடமாக்கும் புட் (கே, வி) முறையைப் பயன்படுத்தி ஹாஷ் வரைபடத்தில் நான்கு உள்ளீடுகளை செருகினேன். செருகும் வரிசை சரி செய்யப்படாததால், நீங்கள் அவற்றை உணவளிக்கும் வரிசையில் உள்ளீடுகள் திருத்தப்படவில்லை என்பதை நீங்கள் அவதானிக்கலாம். இப்போது, ​​உங்களிடம் ஏற்கனவே நுழைவு உள்ள ஒரு வழக்கைக் கவனியுங்கள் ஹாஷ் வரைபடத்தில் மற்றும் அதற்குப் பிறகு நீங்கள் புட் (K1, V5) ஐ செருக முயற்சிக்கிறீர்கள், அதாவது அதே விசையை வேறு மதிப்புடன் வரைபடமாக்க முயற்சிக்கிறீர்கள். புட் முறை பழைய மதிப்பு V1 ஐ புதிய மதிப்பு V2 உடன் மாற்றி பழைய மதிப்பு V1 ஐ வழங்கும், இல்லையெனில், நாம் ஒருபோதும் ஒரு விசையின் மதிப்பை மாற்ற முயற்சிக்கவில்லை என்றால், அந்த விசைக்கு முறை பூஜ்யத்தை அளிக்கிறது.

ஹேஸ்டேபிள் வரையறை

ஹேஸ்டேபிள் என்பது ஒரு வகுப்பாகும் அகராதி வர்க்கம் ஒரு மரபு வர்க்கம் மற்றும் அதை செயல்படுத்த மறுசீரமைக்கப்பட்டுள்ளது வரைபடம் இடைமுகம். ஹேஸ்டேபிள் அதன் தரவு கட்டமைப்பாக ஹாஷ் அட்டவணையைப் பயன்படுத்துகிறது. ஹேஸ்டேபிள் ஹேஷ்மேப்பைப் போன்றது, இங்கே ஹேஸ்டேபிள் பொருள் ஒவ்வொரு உள்ளீடும் ஒரு ஜோடியாக உள்ளீடுகளின் தொகுப்பைக் குறிக்கிறது . தொகுப்பில் உள்ள அனைத்து விசைகளும் மறுபுறம் தனித்துவமாக இருக்க வேண்டும், மதிப்புகள் நகலெடுக்கப்படலாம். விசைகள் குறிப்பாக குறியீட்டை தீர்மானிக்கும் ஹாஷ் குறியீடு மதிப்பைப் பெற பயன்படுத்தப்படுகின்றன, அங்கு ஜோடி ஒரு ஹாஷ் அட்டவணையில் சேமிக்கப்படும். ஒரு ஹாஷ் அட்டவணையில், ஒரு விசையோ அல்லது மதிப்போ பூஜ்ய சுட்டிக்காட்டிக்குத் திரும்ப முடியாது. ஹேஸ்டேபிள் வகுப்பின் அறிவிப்பு மற்றும் ஹேஷ்டேபிள் வகுப்பை உருவாக்குபவர்களைப் பார்ப்போம்.

/ * K விசையை குறிப்பிடுகிறது மற்றும் விசையுடன் தொடர்புடைய மதிப்பை V குறிப்பிடுகிறது * / வகுப்பு ஹேஸ்டேபிள் / * ஹேஸ்டேபிள் கட்டமைப்பாளர்கள் * / ஹேஸ்டேபிள் () ஹேஸ்டேபிள் (முழு அளவு) ஹேஸ்டேபிள் (முழு அளவு, மிதவை நிரப்பு விகிதம்) ஹேஸ்டேபிள் (வரைபடம் <? கே நீட்டிக்கிறது ,? வி> மீ நீட்டிக்கிறது)

மேலே உள்ள குறியீட்டில், முதல் கட்டமைப்பாளர் ஒரு இயல்புநிலை கட்டமைப்பாளராகும், இது ஒரு வகுப்பு ஹேஸ்டேபிளின் வெற்று பொருளை உருவாக்குகிறது, அதன் இயல்புநிலை அளவு 11 மற்றும் இயல்புநிலை நிரப்பு விகிதம் 0.75 ஆகும். இரண்டாவது கட்டமைப்பாளர் “அளவு” அளவுருவில் வழங்கப்பட்ட மதிப்புடன் தொடர்புடைய அளவுடன் ஒரு ஹாஷ் அட்டவணையை உருவாக்குகிறார். மூன்றாவது கட்டமைப்பாளர் அளவுருவில் வழங்கப்பட்ட அளவு மற்றும் நிரப்பு விகிதத்துடன் ஒரு ஹாஷ் அட்டவணையை உருவாக்குகிறார். நான்காவது கட்டமைப்பாளர் m மதிப்புடன் ஹாஷ் அட்டவணையைத் துவக்குகிறார். இப்போது எவ்வாறு செருகுவது என்பதைக் கற்றுக்கொள்வோம் ஹாஷ் அட்டவணையில் ஜோடி.

ஹேஸ்டேபிள் ht = புதிய ஹேஸ்டேபிள் (); ht.put (புதிய ஹாஷ்கோட் (2), 275); ht.put (புதிய ஹாஷ்கோட் (12), 250); ht.put (புதிய ஹாஷ்கோட் (16), 150); ht.put (புதிய ஹாஷ்கோட் (8), 200); System.out.ln (ht); / * வெளியீடு * / {12 = 250, 16 = 150,2y = 275, 8 = 200}

மேலே உள்ள குறியீட்டில், நான் ஹேஸ்டேபிளின் வெற்று பொருளை உருவாக்கி, புட் () முறையைப் பயன்படுத்தி நான்கு உள்ளீடுகளை செருகினேன். நுழைவு பொருளின் குறியீட்டு மதிப்பாக செயல்படும் ஹாஷ் குறியீடு மதிப்பைக் கணக்கிட்டு திருப்பித் தரும் ஹாஷ்கோட் () என்று நான் அழைத்தேன். நீங்கள் பார்க்க முடியும் என நான் ஹாஷ் அட்டவணையின் அளவைக் குறிப்பிடவில்லை, எனவே இயல்புநிலையாக அது 11 ஆக இருக்கும். இங்கேயும், செருகும் வரிசை பாதுகாக்கப்படவில்லை, எனவே, எட் உள்ளீடுகள் வரிசையில் தோன்றாதபோது அது உணவளிக்கப்பட்டது.

  1. ஹாஷ்மேப் செயல்படுத்துகிறது வரைபடம் இடைமுகம் மற்றும் ஒரு சுருக்க வகுப்பை விரிவுபடுத்துகிறது, AbstractMap அதேசமயம், ஹேஸ்டேபிள் சுருக்க வகுப்பை நீட்டிக்கிறது அகராதி, இது ஒரு மரபு வகுப்பாகும், பின்னர் அதை செயல்படுத்த மறுசீரமைக்கப்பட்டது வரைபடம் இடைமுகம்.
  2. ஹாஷ்மேப் பொருள் unsynchronized அதாவது பல நூல்கள் ஒரே நேரத்தில் அதில் இயங்கக்கூடும், எனவே, இது நூல் பாதுகாப்பாக இல்லை. மறுபுறம், ஹேஸ்டேபிளின் பொருள்கள் ஒருங்கிணைக்கப்படும் அதாவது, ஒரு நூல் ஹேஸ்டேபிள் பொருளில் செயல்பட விரும்பினால், அந்த பொருளின் மீது ஒரு பூட்டைப் பெற வேண்டும், இதனால் வேறு எந்த நூலும் அந்த பொருளை அணுக முடியாது, எனவே அது நூல் பாதுகாப்பானது.
  3. ஹாஷ்மேப்பில் விசை திரும்ப முடியும் ஒரு முறை மட்டுமே பூஜ்யம், மற்றும் மதிப்பு திரும்ப முடியும் பல முறை பூஜ்யம். மறுபுறம், ஹாஷ் குறியீடு மதிப்பைப் பெறுவதற்கு ஒரு விசையால் ஒருபோதும் பூஜ்யத்தை திருப்பித் தர முடியாது, இது சேமிக்க ஒரு குறியீடாகப் பயன்படுத்தப்படுகிறது ஜோடி மற்றும் ஒரு மதிப்பு பூஜ்யத்தைத் தர முடியாது.
  4. ஹாஷ்மேப் வகுப்பில் ஹாஷ் அட்டவணையின் இயல்புநிலை திறன் 16 அதேசமயம், ஹேஸ்டேபிளில் ஒரு ஹாஷ் அட்டவணையின் இயல்புநிலை திறன் 11.
  5. தி பல செயலாற்றல் ஹாஷ்மேப் உள்ளீடுகளை கடந்து செல்ல முடியும். மறுபுறம், ஹேஸ்டேபிள் நேரடியாக ஈட்டரேட்டரை ஆதரிக்காது, எனவே பொதுவாக தனிச் சாதன ஹேஸ்டேபிளில் உள்ளீடுகளை கடந்து செல்ல பயன்படுத்தப்படுகிறது.

ஒற்றுமைகள்:

  • ஹாஷ்மேப் மற்றும் ஹேஸ்டேபிள் இரண்டும் தரவு கட்டமைப்பைப் பயன்படுத்துகின்றன ஹாஷ் அட்டவணை.
  • ஹாஷ்மேப் மற்றும் ஹேஸ்டேபிள் இரண்டும் செயல்படுத்துகின்றன வரைபடம் இடைமுகம்
  • செருகும் வரிசை பாதுகாக்கப்படவில்லை ஹாஷ்மேப் மற்றும் ஹேஸ்டேபிள் இரண்டிலும் மற்றும் விசைகளைப் பயன்படுத்தி பெறப்பட்ட ஹாஷ் குறியீட்டை அடிப்படையாகக் கொண்டது.
  • ஹாஷ்மேப் மற்றும் ஹேஸ்டேபிளில், விசைகள் இருக்க வேண்டும் தனிப்பட்ட அதேசமயம், மதிப்புகள் இருக்கலாம் நகல்.
  • ஹேஷ்மேப் மற்றும் ஹேஸ்டேபிள் இரண்டையும் கொண்டிருக்கலாம் பன்முக பொருட்கள் விசைகள் மற்றும் மதிப்புகள் இரண்டிற்கும்.
  • ஹாஷ்மேப் மற்றும் ஹேஸ்டேபிள் ஆகிய இரண்டும் செயல்படுத்துகின்றன சீரியலைசபிளாக மற்றும் Cloneable இடைமுகங்கள் ஆனால் இல்லை, சீரற்ற அணுகல்.
  • ஹாஷ்மேப் மற்றும் ஹேஸ்டேபிள் இரண்டுமே இயல்புநிலை நிரப்பு விகிதத்தைக் கொண்டுள்ளன 0.75.
  • ஹாஷ்மேப் மற்றும் ஹேஸ்டேபிள் இரண்டும் மீட்டெடுப்பதற்கு சிறந்தவை அல்லது தேடி நடவடிக்கைகளை.

தீர்மானம்:

ஹாஷ்மேப் செயல்திறனில் சிறந்தது, ஏனெனில் அதன் பொருள்கள் ஒத்திசைக்கப்படாதவை மற்றும் பல நூல்கள் ஒரே நேரத்தில் இயங்கக்கூடும், எனவே இது ஹேஸ்டேபிளை விட வேகமானது.