జావాలో హాష్ మ్యాప్ మరియు హాష్ టేబుల్ మధ్య తేడా

రచయిత: Laura McKinney
సృష్టి తేదీ: 2 ఏప్రిల్ 2021
నవీకరణ తేదీ: 5 మే 2024
Anonim
14.11 జావాలో HashMap మరియు HashTable
వీడియో: 14.11 జావాలో HashMap మరియు HashTable

విషయము


హాష్ మ్యాప్ మరియు హాష్ టేబుల్ రెండూ ప్రాతినిధ్యం వహించడానికి ఉపయోగిస్తారు వస్తువుల సమూహం లో ప్రాతినిధ్యం వహిస్తాయి జంట. ప్రతి జత అంటారు ఎంట్రీ వస్తువు. ది సేకరణ ఎంట్రీలను హాష్ మ్యాప్ మరియు హాష్ టేబుల్ యొక్క వస్తువు సూచిస్తుంది. సేకరణలోని కీలు ప్రత్యేకంగా లేదా విలక్షణంగా ఉండాలి. హాష్ మ్యాప్ మరియు హ్యాష్ టేబుల్ మధ్య వ్యత్యాసం అది hashmap ముఖ్యంగా మ్యాప్ ఇంటర్ఫేస్ను అమలు చేస్తుంది, అయితే Hashtable మ్యాప్ ఇంటర్ఫేస్ను అమలు చేయడానికి పునర్నిర్మించబడిన డిక్షనరీ క్లాస్ (లెగసీ క్లాస్) ను విస్తరించింది. ఇతర ముఖ్యమైన వ్యత్యాసం ఏమిటంటే హాష్ మ్యాప్ యొక్క వస్తువులు unsynchronized అయితే, హాష్ టేబుల్ యొక్క వస్తువులు సమకాలీకరించబడిన.

హాష్ మ్యాప్ మరియు హాష్ టేబుల్ మధ్య మరికొన్ని తేడాలు తెలుసుకోవడానికి క్రింద చూపిన పోలిక చార్ట్ చూద్దాం.

  1. పోలిక చార్ట్
  2. నిర్వచనం
  3. కీ తేడాలు
  4. సారూప్యతలు
  5. ముగింపు

పోలిక చార్ట్

పోలిక కోసం ఆధారంhashmapHashtable
అమలు / విస్తరించండిహాష్ మ్యాప్ క్లాస్ మ్యాప్ ఇంటర్ఫేస్ను అమలు చేస్తుంది మరియు అబ్స్ట్రాక్ట్ మ్యాప్ క్లాస్ ను విస్తరిస్తుంది.హాష్ టేబుల్ డిక్షనరీ లెగసీ క్లాస్ యొక్క విస్తరించి ఉంది, కానీ, ఇది తిరిగి ఇంజనీరింగ్ చేయబడింది మరియు ఇప్పుడు ఇది మ్యాప్ ఇంటర్ఫేస్ను కూడా అమలు చేస్తుంది.
సమకాలీకరణహాష్ మ్యాప్ సమకాలీకరించబడలేదు మరియు అందువల్ల, హాష్ మ్యాప్ ఆబ్జెక్ట్ సురక్షితంగా థ్రెడ్ చేయబడలేదు.హ్యాష్‌టేబుల్ సమకాలీకరించబడింది మరియు అందువల్ల, హ్యాష్‌టేబుల్ యొక్క వస్తువు థ్రెడ్ సురక్షితం.
కీస్ / విలువఒక కీ శూన్యతను ఒక్కసారి మాత్రమే తిరిగి ఇవ్వగలదు, కానీ ఒక విలువ శూన్యతను ఎంత సమయం అయినా తిరిగి ఇవ్వగలదు.హాష్ పట్టిక యొక్క సూచికగా ఉపయోగించబడే హాష్ కోడ్‌ను పొందటానికి ఒక కీ శూన్యతను తిరిగి ఇవ్వదు, లేదా విలువ శూన్యతను తిరిగి ఇవ్వదు.
డిఫాల్ట్ ప్రారంభ సామర్థ్యంహాష్ మ్యాప్ యొక్క డిఫాల్ట్ ప్రారంభ సామర్థ్యం 16.హ్యాష్‌టేబుల్ యొక్క డిఫాల్ట్ ప్రారంభ సామర్థ్యం 11.
నదీ ప్రవాహానికి అడ్డంగా ప్రయాణంహాష్ మ్యాప్ ఇటేరేటర్ ద్వారా ప్రయాణించబడుతుంది.మ్యాప్ క్లాస్ హ్యాష్‌టేబుల్ కూడా ప్రయాణించడానికి ఇటిరేటర్‌కు నేరుగా మద్దతు ఇవ్వదు మరియు అందువల్ల, ఇది ఎన్యూమరేటర్‌ను ఉపయోగిస్తుంది.


హాష్ మ్యాప్ యొక్క నిర్వచనం

హాష్ మ్యాప్ అనేది అమలు చేసే తరగతి మ్యాప్ ఇంటర్ఫేస్ మరియు విస్తరిస్తుంది AbstractMap తరగతి హాష్ పట్టికను ఉపయోగిస్తుంది. హాష్ మ్యాప్ యొక్క వస్తువు సేకరణ / సమితిని సూచిస్తుంది ప్రతి కీ ఒక నిర్దిష్ట విలువకు మ్యాప్ చేయబడిన జత. సేకరణలోని కీలు విలువను తిరిగి పొందడానికి ఉపయోగించబడుతున్నందున అవి ప్రత్యేకంగా ఉండాలి. మరోవైపు, సేకరణలోని విలువలను నకిలీ చేయవచ్చు. హాష్ మ్యాప్ క్లాస్ మరియు హాష్ మ్యాప్ క్లాస్ యొక్క కన్స్ట్రక్టర్ల ప్రకటన క్రింది విధంగా ఉన్నాయి:

/ * K కీని సూచిస్తుంది మరియు V విలువను సూచిస్తుంది * / క్లాస్ హాష్ మ్యాప్ / * హాష్ మ్యాప్ క్లాస్ యొక్క కన్స్ట్రక్టర్లు * / హాష్ మ్యాప్ () హాష్ మ్యాప్ (మ్యాప్ <? K ని విస్తరిస్తుంది, V ని విస్తరిస్తుంది V> m) హాష్ మ్యాప్ (పూర్ణాంక సామర్థ్యం) హాష్ మ్యాప్ (పూర్ణాంక సామర్థ్యం, ​​ఫ్లోట్ ఫిల్ రేషియో)

మొదటి కన్స్ట్రక్టర్ డిఫాల్ట్ కన్స్ట్రక్టర్, ఇది హాష్ మ్యాప్ యొక్క ఖాళీ వస్తువును డిఫాల్ట్ సామర్థ్యం 16 మరియు డిఫాల్ట్ ఫిల్ రేషియో 0.75 తో ప్రారంభిస్తుంది. రెండవ కన్స్ట్రక్టర్ m విలువతో హాష్ మ్యాప్‌ను ప్రారంభిస్తాడు. మూడవ కన్స్ట్రక్టర్ వాదన “సామర్థ్యం” లో అందించిన విలువకు అనుగుణంగా ప్రారంభ సామర్థ్యంతో హాష్ మ్యాప్‌ను సృష్టిస్తుంది. నాల్గవ కన్స్ట్రక్టర్ హాష్ మ్యాప్‌ను సామర్థ్యం మరియు పారామితులలో అందించిన పూరక నిష్పత్తితో ప్రారంభిస్తాడు. హాష్ మ్యాప్‌లోని ఎంట్రీలను ఎలా పోషించాలో ఇప్పుడు తెలుసుకుందాం.


హాష్మ్యాప్ 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 కీతో అనుబంధించబడిన విలువను పేర్కొంటుంది * / క్లాస్ హ్యాష్‌టేబుల్ / * హాష్ టేబుల్ యొక్క కన్స్ట్రక్టర్లు * / హాష్ టేబుల్ () హాష్ టేబుల్ (పూర్ణాంక పరిమాణం) హాష్ టేబుల్ (పూర్ణాంక పరిమాణం, ఫ్లోట్ ఫిల్ రేషియో) హాష్ టేబుల్ (మ్యాప్ <? K ని విస్తరించింది, V> m ని విస్తరించింది)

పై కోడ్‌లో, మొదటి కన్స్ట్రక్టర్ డిఫాల్ట్ కన్స్ట్రక్టర్, ఇది క్లాస్ హాష్ టేబుల్ యొక్క ఖాళీ వస్తువును సృష్టిస్తుంది, దాని డిఫాల్ట్ పరిమాణం 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. ది ఇటెరేటర్ హాష్మ్యాప్ ఎంట్రీలను దాటవచ్చు. మరోవైపు, హ్యాష్‌టేబుల్ నేరుగా ఇటేరేటర్‌కు మద్దతు ఇవ్వదు మరియు అందువల్ల సాధారణంగా పరిగణకులు హ్యాష్‌టేబుల్‌లోని ఎంట్రీలను దాటడానికి ఉపయోగించబడుతుంది.

సారూప్యతలు:

  • హాష్ మ్యాప్ మరియు హాష్ టేబుల్ రెండూ డేటా నిర్మాణాన్ని ఉపయోగిస్తాయి హాష్ టేబుల్.
  • హాష్ మ్యాప్ మరియు హాష్ టేబుల్ రెండూ పనిముట్లు మ్యాప్ ఇంటర్ఫేస్
  • చొప్పించే క్రమం భద్రపరచబడలేదు హాష్ మ్యాప్ మరియు హాష్ టేబుల్ రెండింటిలో మరియు కీలను ఉపయోగించి పొందిన హాష్ కోడ్ ఆధారంగా.
  • హాష్ మ్యాప్ మరియు హ్యాష్‌టేబుల్‌లో, కీలు తప్పనిసరిగా ఉండాలి ఏకైక అయితే, విలువలు కావచ్చు నకిలీ.
  • హాష్ మ్యాప్ మరియు హాష్ టేబుల్ రెండూ కలిగి ఉండవచ్చు భిన్న వస్తువులు కీలు మరియు విలువలు రెండింటి కోసం.
  • హాష్ మ్యాప్ మరియు హ్యాష్ టేబుల్, రెండూ అమలు చేస్తాయి Serializable మరియు Cloneable ఇంటర్ఫేస్లు కానీ కాదు, యాదృచ్ఛిక ప్రాప్యత.
  • హాష్ మ్యాప్ మరియు హ్యాష్ టేబుల్ రెండూ డిఫాల్ట్ పూరక నిష్పత్తిని కలిగి ఉంటాయి 0.75.
  • హాష్ మ్యాప్ మరియు హ్యాష్ టేబుల్ రెండూ తిరిగి పొందటానికి ఉత్తమమైనవి లేదా శోధన కార్యకలాపాలు.

ముగింపు:

హాష్ మ్యాప్ పనితీరులో మెరుగ్గా ఉంటుంది, ఎందుకంటే దాని వస్తువులు సమకాలీకరించబడవు మరియు బహుళ థ్రెడ్లు ఒకే సమయంలో దానిపై పనిచేయగలవు మరియు అందువల్ల ఇది హాష్ టేబుల్ కంటే వేగంగా ఉంటుంది.