"மற்றும் கடைசியாக, வரைபடத்தைப் பற்றி நான் உங்களுக்குச் சொல்கிறேன்."
"வரைபடம், உங்களுக்குத் தெரிந்தபடி, விசை மதிப்பு ஜோடிகளின் தொகுப்பைச் சேமிக்கிறது. விசைகள் தனிப்பட்டதாக இருக்க வேண்டும், ஆனால் மதிப்புகள் எதுவும் இருக்கலாம். நீங்கள் வரைபடத்தில் விசை-மதிப்பு ஜோடியைச் சேர்த்தால், சேகரிப்பில் ஏற்கனவே விசை இருந்தால், பின்னர் பழைய மதிப்பு புதியதாக மாற்றப்படும். வேறு வார்த்தைகளில் கூறுவதானால், விசையானது எந்தவொரு பொருளாகவும் இருக்கக்கூடிய ஒரு சிறப்பு குறியீட்டைப் போல செயல்படுகிறது ."
வரைபடம் என்பது ஒரு கணிதச் சொல்லாகும், இது (x, y) ஜோடிகளின் தொகுப்பைக் குறிக்கிறது, இதில் ஒவ்வொரு தனிப்பட்ட x சில y க்கு ஒத்திருக்கும்.
புரோகிராமர்கள் வரைபடத்தை மிகவும் விரும்புகிறார்கள், எனவே வரைபட இடைமுகத்தை செயல்படுத்தும் 4 வெவ்வேறு தொகுப்புகளை இங்கே வழங்குகிறோம்:
"இதோ அதன் எளிய பரம்பரை அமைப்பு:"
" வரைபட இடைமுகத்தில் உள்ளீடு என்பது உள்ளமைக்கப்பட்ட இடைமுகம் என்பதை மஞ்சள் குறிக்கிறது ."
"உறுப்பு ஜோடியை ஒற்றை உட்பொருளாக விவரிக்க நுழைவு சேர்க்கப்பட்டது."
"மேப்<K,V> இன் முறைகள் இதோ:"
முறைகள் | விளக்கம் |
---|---|
int size() |
வரைபடத்தில் உள்ள ஜோடிகளின் எண்ணிக்கையை வழங்குகிறது. |
boolean isEmpty() |
வரைபடம் காலியாக உள்ளதா என சரிபார்க்கிறது. |
boolean containsKey(Object key) |
வரைபடத்தில் குறிப்பிட்ட விசை உள்ளதா? |
boolean containsValue(Object value) |
வரைபடத்தில் குறிப்பிட்ட மதிப்பு உள்ளதா? |
V get(Object key) |
குறிப்பிட்ட விசைக்கான மதிப்பை வழங்கும். |
V put(K key, V value) |
விசைக்கு புதிய மதிப்பை அமைக்கிறது. முறை பழைய மதிப்பு அல்லது பூஜ்யத்தை வழங்குகிறது |
putAll(Map<? extends K, ? extends V> m) |
மற்றொரு வரைபடத்திலிருந்து ஜோடிகளைச் சேர்க்கிறது. |
void clear() |
வரைபடத்தை அழிக்கிறது, அதாவது அனைத்து ஜோடிகளையும் நீக்குகிறது. |
Set<K>keySet() |
விசைகளின் தொகுப்பை வழங்குகிறது. |
Collection<V>values() |
மதிப்புகளின் தொகுப்பை வழங்குகிறது. |
Set<Map.Entry<K, V>>entrySet() |
ஜோடிகளின் தொகுப்பை வழங்குகிறது. |
"K மற்றும் V என்பது விசைகள் மற்றும் மதிப்புகளுக்கான வகை அளவுருக்கள்."
"சரி, பெரும்பாலான முறைகளை நான் நன்கு அறிந்திருக்கிறேன், ஆனால் அவற்றில் சிலவற்றில் மட்டுமே நான் வேலை செய்துள்ளேன்."
"என்ட்ரி கிளாஸ் பற்றி வேறு என்ன சொல்ல முடியும்?"
"இந்த வகுப்பு ஒரு ஜோடி உறுப்புகளை விவரிக்கிறது. இதில் சில முறைகள் உள்ளன:"
முறைகள் | விளக்கம் |
---|---|
K getKey() |
விசை-மதிப்பு ஜோடியின் விசையை வழங்குகிறது. |
V getValue() |
விசை-மதிப்பு ஜோடியின் மதிப்பை வழங்குகிறது. |
V setValue(V value) |
முக்கிய மதிப்பு ஜோடியில் புதிய மதிப்பை அமைக்கிறது. |
"நுழைவு வசதியானது, ஏனென்றால் முழு வரைபடத்தையும் கடக்காமல் ஒரு ஜோடியை ஒரு முறைக்கு அனுப்பலாம்."
"நான் பார்க்கிறேன்."
"இப்போது நான் வரைபட செயலாக்கங்களைப் பார்க்கிறேன்."
"முதலில் ஹாஷ்மேப் உள்ளது . இது கூறுகளைச் சேமிக்க ஹாஷ் அட்டவணைகளைப் பயன்படுத்துகிறது. விசைகள் மற்றும் மதிப்புகள் எந்த வகையிலும் இருக்கலாம், அதே போல் பூஜ்யமாகவும் இருக்கலாம். சேகரிப்பு மாறும்போது உறுப்புகளின் வரிசை மாறலாம் ."
"உறுப்புகள் ஒரு HashMap இல் குழுக்கள் அல்லது வாளிகளின் தொகுப்பாக சேமிக்கப்படுகின்றன. ஒரு உறுப்பின் hashCode() முறை அது எந்த வாளியில் விழுகிறது என்பதை தீர்மானிக்கிறது."
"மிக தோராயமாகச் சொன்னால், 1 முதல் 100 வரையிலான ஹாஷ் குறியீட்டைக் கொண்ட கூறுகள் முதல் வாளியில் விழுகின்றன, 101 முதல் 200 வரையிலான மதிப்புள்ளவை இரண்டாவது வாளியில் விழுகின்றன, மேலும் பல."
"இந்த வழியில் உறுப்புகளை சேமிப்பதன் முக்கிய அம்சம் என்னவென்றால், உறுப்புகளைத் தேடும் போது அல்லது அகற்றும் போது பொருத்தமற்ற வாளிகளில் உள்ள அனைத்து உறுப்புகளையும் அகற்றலாம்."
"நான் பார்க்கிறேன்."
"HashMap பற்றி ஒரு நல்ல கட்டுரை உள்ளது. அதைப் படிக்குமாறு நான் பரிந்துரைக்கிறேன்: https://medium.com/@mr.anmolsehgal/java-hashmap-internal-implementation-21597e1efec3 "
"இரண்டாவது சேகரிப்பு LinkedHashMap ஆகும். HashMap இலிருந்து அதன் முக்கிய வேறுபாடு என்னவென்றால், அது இணைக்கப்பட்ட பட்டியலாக பொருட்களைச் சேமிக்கிறது. ஒரு சாதாரண HashMap இல், உறுப்புகளின் வரிசை வரையறுக்கப்படவில்லை மற்றும் காலப்போக்கில் மாறலாம். மேலும் நீங்கள் LinkedHashMap இலிருந்து ஒரு மறுதொடக்கத்தைப் பெறலாம். மேலும், LinkedHashMap இல் சேர்க்கப்பட்டுள்ள அனைத்து உறுப்புகளின் வழியாகவும் நடக்க இதைப் பயன்படுத்தவும். மேலும், LinkedHashMap ஆனது, கடைசிப் பயன்பாடு/செயல்பாட்டின் வரிசையில் அனைத்து ஜோடிகளையும் கடந்து செல்ல உங்களை அனுமதிக்கும் ஒரு இடிரேட்டரைக் கொண்டுள்ளது."
"LinkedHashMap பற்றி ஒரு நல்ல கட்டுரை உள்ளது. இங்கே நீங்கள் செல்லுங்கள்: https://medium.com/@mr.anmolsehgal/java-linkedhashmap-internal-implementation-44e2e2893036 "
"இன்று நான் பேச விரும்பும் மூன்றாவது தொகுப்பு TreeMap ."
" TreeMap அதன் கூறுகளை ஏறுவரிசையில் வரிசைப்படுத்துகிறது. ட்ரீமேப் கூறுகளைச் சேமிக்க சமநிலையான சிவப்பு-கருப்பு மரத்தைப் பயன்படுத்துவதால் இது அடையப்படுகிறது."
"இதன் விளைவாக, செருகும் நேரம் மற்றும் தேடல் நேரம் மிகக் குறைவு. மிகப் பெரிய அளவிலான டேட்டாவைப் பயன்படுத்தும் போது இந்த வகுப்பு சிறந்த தேர்வாகும்."
"மற்றும், நிச்சயமாக, ட்ரீமேப்பில் ஒரு கட்டுரை உள்ளது: https://medium.com/xebia-engineering/treemap-internals-199e0e0050b5 "
"நான் இன்னும் உன்னிடம் என்ன சொல்லவில்லை?"
"வீக்ஹாஷ்மேப், ஆனால் ரிஷி இதைப் பற்றி இரண்டு நாட்களுக்கு முன்பு என்னிடம் கூறினார்."
"அது எப்பொழுது?"
"SoftReference, WeakReference மற்றும் PhantomReference பற்றி அவர் பேசியபோது."
"அனைவருக்கும் நீங்கள் சரியாகப் பெயரிட்டீர்கள் என்று கருதி நான் உன்னை நம்புகிறேன். பிறகு ஓய்வெடுக்கச் செல்லுங்கள். இன்றிரவு சந்திப்போம்."
"பை, எல்லி."
GO TO FULL VERSION