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

" ஹாஷ்செட் என்பது ஹாஷ்கோட் () முறை மூலம் வழங்கப்படும் ஹாஷ் மதிப்புகளைப் பயன்படுத்தி உறுப்புகளை உள்நாட்டில் சேமிக்கும் ஒரு தொகுப்பாகும் ."
"எளிமைக்காக, HashSet<E> ஒரு HashMap<E, Object> பொருளைச் சேமிக்கிறது, அது HashSet இன் மதிப்புகளை விசைகளாகச் சேமிக்கிறது."
"ஐயோ!"
"ஹாஷ் குறியீடுகளைப் பயன்படுத்துவது, தொகுப்பிலிருந்து உறுப்புகளைத் தேடவும், சேர்க்கவும் மற்றும் அகற்றவும் உங்களை அனுமதிக்கிறது."
"ஆனால் உங்கள் வகுப்புகளின் பொருள்களை ஒரு தொகுப்பில் சேர்ப்பதற்கும், அவற்றைச் சரியாகக் கண்டறிவதற்கும் உங்கள் வகுப்பு ஹாஷ்கோட் & சமமான முறைகளை சரியாகச் செயல்படுத்த வேண்டும் என்பதை நினைவில் கொள்ளவும் ."
"இரண்டு முறைகளும் HashSet/HashMap இல் அதிகம் பயன்படுத்தப்படுகின்றன . "
"நீங்கள் ஹாஷ்கோட் () முறையைச் செயல்படுத்த மறந்துவிட்டால் , உங்கள் பொருளைத் தொகுப்பில் இருந்தாலும், அதைக் கண்டுபிடிக்க முடியாமல் போகும் அபாயம் உள்ளது."
"ஆமாம், எனக்கு ஞாபகம் இருக்கிறது, எனக்கு நினைவிருக்கிறது. இதைப் பற்றி நீங்கள் முன்பே சொன்னீர்கள். நான் அதைப் பற்றி எல்லாம் கேள்விப்பட்டேன்."
"சரி. உங்களுக்கு இன்னும் சில பயனுள்ள தகவல்கள்."
" உங்கள் வகுப்பில் ஹாஷ்கோட் மற்றும் சமமானவற்றைச் சரியாகச் செயல்படுத்தியுள்ளீர்கள் என்று வைத்துக்கொள்வோம் , மேலும் உங்கள் பொருட்களை ஒரு தொகுப்பில் மகிழ்ச்சியுடன் சேமித்து வைக்கிறீர்கள்."
"ஆனால் நீங்கள் சென்று பொருள்களில் ஒன்றை மாற்றுகிறீர்கள், அதன் மூலம் அதன் ஹாஷைக் கணக்கிடப் பயன்படுத்தப்படும் உள் தரவை மாற்றுகிறீர்கள் . எனவே பொருளின் ஹாஷ் மாறுகிறது."
"மேலும் நீங்கள் அதை தொகுப்பில் தேடும்போது, நீங்கள் அதைக் கண்டுபிடிக்க முடியாது."
"ஐயோ! அது எப்படி வேலை செய்கிறது?"
"ஹாஷ்களுடன் பணிபுரியும் போது இது நன்கு அறியப்பட்ட ஆபத்து. அடிப்படையில், ஹாஷ்செட் (மற்றும் ஹாஷ்மேப்) தேடல்கள் பொருள்கள் மாறாமல் இருந்தால் மட்டுமே சரியாக வேலை செய்யும் என்று உத்தரவாதம் அளிக்கப்படும் ."
"ஐயோ! என்ன, யாரும் அதைப் பற்றி எதுவும் செய்வதில்லை?"
"எல்லோரும் பிரச்சனை இல்லை என்று பாசாங்கு செய்கிறார்கள். ஆனால் இது அடிக்கடி நேர்காணல்களில் வருகிறது, எனவே இது நினைவில் கொள்ளத்தக்கதாக இருக்கலாம்..."
" LinkedHashSet என்பது HashSet ஆகும், அதன் கூறுகளும் இணைக்கப்பட்ட பட்டியலில் சேமிக்கப்படும். சாதாரண HashSets உறுப்புகளை வரிசைப்படுத்துவதை ஆதரிக்காது. முதலாவதாக, இது ஒரு அதிகாரப்பூர்வ செயல்பாடு அல்ல. இரண்டாவதாக, உள் வரிசை கூட ஒரு ஒற்றை போது கணிசமாக மாறலாம். உறுப்பு சேர்க்கப்பட்டது."
ஆனால் நீங்கள் LinkedHashSet இலிருந்து ஒரு இடிரேட்டரைப் பெறலாம் மற்றும் LinkedHashSet இல் சேர்க்கப்பட்ட வரிசையில் உள்ள அனைத்து உறுப்புகளையும் பார்க்க அதைப் பயன்படுத்தலாம் . இது அடிக்கடி நடக்காது, ஆனால் சில நேரங்களில் இது மிகவும் தேவைப்படுகிறது."
"நான் பார்க்கிறேன். இந்தக் காட்சிகளுக்கான வகுப்புகள் இருக்கும் போது எனக்குப் பிடிக்கும். இதுபோன்ற வழக்குகள் அவ்வளவு அரிதானவை அல்ல."
" TreeSet என்பது மதிப்புகளின்படி வரிசைப்படுத்தப்பட்ட மரத்தின் வடிவில் உள்ள கூறுகளைச் சேமிக்கும் ஒரு தொகுப்பு ஆகும். TreeSet <E> இந்த மதிப்புகள் அனைத்தையும் சேமிக்கும் TreeMap <E, Object> ஐக் கொண்டுள்ளது . மேலும் இந்த TreeMap சேமிக்க ஒரு சமநிலையான சிவப்பு -கருப்பு மரத்தைப் பயன்படுத்துகிறது. உறுப்புகள் . இதன் விளைவாக, இது மிக வேகமாகச் சேர்ப்பது, அகற்றுவது மற்றும் செயல்பாடுகளைக் கொண்டுள்ளது."
"ஆமாம், எனக்கு ஞாபகம் இருக்கிறது. சமீபத்தில்தான் அதைப் பற்றி விவாதித்தோம். மேலும் இது எங்கு பயன்படுத்தப்படுகிறது என்பதையும் யோசித்தேன்."
"ஜாவாவின் மிகவும் பிரபலமான சில தொகுப்புகள் இதைப் பயன்படுத்துகின்றன."
"ஆமாம். நேர்காணல் செய்பவர்கள் ட்ரீசெட் பற்றி அடிக்கடி கேட்கிறார்கள். அவர்கள் வழக்கமாக உங்களை ஏமாற்ற முயற்சிக்கிறார்கள். அவர்கள் சொல்வார்கள், 'ட்ரீசெட் பைனரி மரத்தைப் பயன்படுத்தினால், எல்லா உறுப்புகளும் ஒரு நீண்ட கிளையை உருவாக்கலாம், எனவே தேடல்கள் "ட்ரீசெட் மற்றும் ட்ரீமேப் ஆகியவை சீரான சிவப்பு -கருப்பு மரங்களைப் பயன்படுத்துகின்றன என்பது ஒரு குழந்தைக்கு கூட தெரியும், அதனால் அந்த சூழ்நிலை உண்மையில் சாத்தியமற்றது."
"ஆஹா. அந்தக் கேள்வியைக் கேட்டவரின் முகத்தைப் பார்க்க நான் விரும்புகிறேன். அந்தச் சொற்றொடரை நான் மனப்பாடம் செய்திருக்கலாம். ..."
"ஆனால் நடைமுறையில், செட் நான் ஆரம்பத்தில் நினைத்தது போல் எளிமையானதாக இல்லை."
"மறுபுறம், வரிசையின் நிலைமை மிகவும் எளிமையானது:"

" வரிசை வரிசையை செயல்படுத்துகிறது. வரிசையின் முடிவில் கூறுகள் சேர்க்கப்பட்டு முன்பக்கத்தில் இருந்து எடுக்கப்படும்."
" PpriorityQueue உண்மையில் வரிசை இடைமுகத்தின் ஒரே உன்னதமான செயலாக்கமாகும் , இது LinkedList ஐ எண்ணவில்லை , இது தொழில்நுட்ப ரீதியாகவும் ஒரு வரிசையாகும்."
"சரி, நான் சோர்வாக இருக்கிறேன், இன்னைக்கு அவ்வளவுதான். அடுத்த முறை வரை."
GO TO FULL VERSION