"సరే, మీ ప్రాసెసర్ ఎలా ఉంది?"
"అది సరే. ఒక గంట లిక్విడ్ నైట్రోజన్లో కూర్చున్నాను, ఇప్పుడు నేను కొత్తగా ఉన్నాను!"
"గ్రేట్. అప్పుడు కంటిన్యూ చేద్దాం."
"సేకరణలను సెట్ చేయండి."
గణితశాస్త్రపరంగా చెప్పాలంటే, సమితి అనేది ప్రత్యేకమైన మూలకాల సమూహం. అందువల్ల, ప్రోగ్రామింగ్లో, సెట్ అనేది ప్రత్యేకమైన మూలకాల యొక్క సమాహారం, అంటే ఒకే విధమైన మూలకాలను నిల్వ చేయడానికి మిమ్మల్ని అనుమతించని సేకరణ.
"ఎల్లీ మీకు సెట్ యొక్క వారసత్వ శ్రేణిని చూపించారో లేదో నాకు తెలియదు. కాకపోతే, ఇదిగోండి:"

" HashSet అనేది hashCode () పద్ధతి ద్వారా అందించబడిన హాష్ విలువలను ఉపయోగించి అంతర్గతంగా మూలకాలను నిల్వ చేసే సేకరణ ."
"సరళత కోసం, HashSet<E> HashMap<E, Object> వస్తువును నిల్వ చేస్తుంది, అది HashSet విలువలను కీలుగా నిల్వ చేస్తుంది."
"అయ్యో!"
"హాష్ కోడ్లను ఉపయోగించడం వలన సెట్ నుండి ఎలిమెంట్ల కోసం త్వరగా శోధించడానికి, జోడించడానికి మరియు తీసివేయడానికి మిమ్మల్ని అనుమతిస్తుంది."
"అయితే మీ క్లాస్ల ఆబ్జెక్ట్లను సెట్కి జోడించడానికి మరియు వాటిని సరిగ్గా కనుగొనడానికి మీ క్లాస్ తప్పనిసరిగా హ్యాష్కోడ్ & ఈక్వల్ మెథడ్స్ని తప్పనిసరిగా అమలు చేయాలని గుర్తుంచుకోండి ."
"రెండు పద్ధతులు HashSet/HashMap లోపల చాలా ఉపయోగించబడతాయి . "
"మీరు హ్యాష్కోడ్ () పద్ధతిని అమలు చేయడం మరచిపోతే, సెట్లో మీ ఆబ్జెక్ట్ ఉన్నప్పటికి దాన్ని కనుగొనలేక పోయే ప్రమాదం ఉంది."
"అవును, నాకు గుర్తుంది, నాకు గుర్తుంది. మీరు దీని గురించి నాకు ముందే చెప్పారు. నేను దాని గురించి అంతా విన్నాను."
"సరే. మీ కోసం ఇక్కడ మరికొన్ని ఉపయోగకరమైన సమాచారం ఉంది."
"మీరు మీ క్లాస్లో హ్యాష్కోడ్ మరియు ఈక్వల్లను సరిగ్గా అమలు చేసారని అనుకుందాం మరియు మీరు మీ వస్తువులను ఒక సెట్లో సంతోషంగా భద్రపరిచారు."
"అయితే మీరు వెళ్లి ఆబ్జెక్ట్లలో ఒకదానిని మార్చండి మరియు అలా చేయడం ద్వారా మీరు దాని హాష్ని లెక్కించడానికి ఉపయోగించే అంతర్గత డేటాను మారుస్తారు . కాబట్టి ఆబ్జెక్ట్ యొక్క హాష్ మారుతుంది."
"మరియు దీని అర్థం మీరు సెట్లో దాని కోసం శోధించినప్పుడు, మీరు దానిని కనుగొనలేకపోవచ్చు."
"ఓహో! అది ఎలా పని చేస్తుంది?"
"హాష్లతో పని చేస్తున్నప్పుడు ఇది బాగా తెలిసిన ఆపద. ముఖ్యంగా, వస్తువులు మారకుండా ఉంటే మాత్రమే HashSet (మరియు HashMap) శోధనలు సరిగ్గా పనిచేస్తాయని హామీ ఇవ్వబడుతుంది ."
"ఓహో! మరి, దాని గురించి ఎవరూ ఏమీ చేయరు?"
"సమస్య ఉనికిలో లేదని అందరూ నటిస్తారు. కానీ ఇది తరచుగా ఇంటర్వ్యూలలో వస్తుంది, కనుక ఇది గుర్తుంచుకోవాలి..."
" LinedHashSet అనేది HashSet, దీని మూలకాలు కూడా లింక్ చేయబడిన జాబితాలో నిల్వ చేయబడతాయి. సాధారణ HashSets మూలకాల క్రమాన్ని సపోర్ట్ చేయదు. మొదటిది, ఇది కేవలం అధికారిక ఆపరేషన్ కాదు. రెండవది, అంతర్గత క్రమం కూడా గణనీయంగా మారవచ్చు మూలకం జోడించబడింది."
కానీ మీరు లింక్డ్హాష్సెట్ నుండి ఇటరేటర్ను పొందవచ్చు మరియు లింక్డ్హాష్సెట్కి జోడించిన క్రమంలో అన్ని మూలకాల ద్వారా వెళ్లడానికి దాన్ని ఉపయోగించవచ్చు . ఇది తరచుగా జరగదు, కానీ కొన్నిసార్లు ఇది చాలా అవసరం."
"నేను చూస్తున్నాను. ఈ «కేవలం సందర్భంలో» దృష్టాంతాల కోసం తరగతులు ఉన్నప్పుడు నేను ఇష్టపడతాను. అలాంటి సందర్భాలు అన్నీ చాలా అరుదుగా ఉండవు."
" TreeSet అనేది విలువల ద్వారా క్రమబద్ధీకరించబడిన చెట్టు రూపంలో మూలకాలను నిల్వ చేసే సేకరణ. TreeSet <E> ఈ విలువలన్నింటినీ నిల్వ చేసే TreeMap <E, Object>ని కలిగి ఉంటుంది. మరియు ఈ TreeMap నిల్వ చేయడానికి సమతుల్య ఎరుపు -నలుపు చెట్టును ఉపయోగిస్తుంది. మూలకాలు . ఫలితంగా, ఇది చాలా వేగంగా జోడించడం, తీసివేయడం మరియు కార్యకలాపాలను కలిగి ఉంటుంది."
"అవును, నాకు గుర్తుంది. మేము ఇటీవలే దాని గురించి చర్చించాము. మరియు ఇది ఎక్కడ ఉపయోగించబడుతుందో నేను కూడా ఆలోచించాను."
"మరియు జావా యొక్క అత్యంత ప్రజాదరణ పొందిన కొన్ని సేకరణలు దీనిని ఉపయోగిస్తున్నాయని తేలింది."
"అవును. అయితే, ఇంటర్వ్యూ చేసేవారు తరచుగా TreeSet గురించి అడుగుతారు. వారు సాధారణంగా మిమ్మల్ని మోసగించడానికి ప్రయత్నిస్తున్నారు. వారు ఇలా చెబుతారు, 'TreeSet బైనరీ ట్రీని ఉపయోగిస్తే, అన్ని మూలకాలు ఒక పొడవైన శాఖను ఏర్పరుస్తాయి, కాబట్టి శోధనలు "ట్రీసెట్ మరియు ట్రీమ్యాప్ సమతుల్య ఎరుపు -నలుపు చెట్లను ఉపయోగిస్తాయని పిల్లలకి కూడా తెలుసు, కాబట్టి ఆ పరిస్థితి అసంభవం."
"ఆహ్. ఆ ప్రశ్న అడిగిన వ్యక్తి ముఖాన్ని చూడాలని నేను ఇష్టపడతాను. నేను ఆ పదబంధాన్ని కూడా గుర్తుంచుకోవచ్చు. ..."
"కానీ ఆచరణలో, సెట్ నేను మొదట్లో అనుకున్నంత సులభం కాదు."
"మరోవైపు, క్యూతో పరిస్థితి చాలా సరళంగా ఉంది:"

" క్యూ క్యూను అమలు చేస్తుంది. ఎలిమెంట్స్ క్యూ చివర జోడించబడతాయి మరియు ముందు నుండి తీసుకోబడతాయి."
" PorityQueue నిజానికి క్యూ ఇంటర్ఫేస్ యొక్క ఏకైక క్లాసిక్ అమలు, లింక్డ్లిస్ట్ను లెక్కించదు , ఇది సాంకేతికంగా కూడా క్యూ."
"సరే, నేను అలసిపోతున్నాను. ఈ రోజు అంతే. వచ్చే వరకు."
GO TO FULL VERSION