HashSet vs HashMap - Top 5 terminológií HashSet a HashMap

Obsah:

Anonim

Rozdiel medzi HashSet verzus HashMap

V tomto článku sa HashSet verzus HashMap, dva z kľúčových prvkov rámca zberu, HashSet a HashMap, vo všeobecnosti považujú za kolektívnu položku a sú vzájomne zameniteľné. Medzi týmito dvoma je však veľa rozdielov. Začnime diskusiou o tom, čo je rámec zberu, a potom by sme sa nimi zaoberali jeden po druhom, potom podobnosti medzi nimi a nakoniec diskusiu o rozdieloch a niektorých bežných chybách poukazujúcich na ich zameniteľnú tendenciu k používaniu. Tieto dva prvky sa široko používajú aj v koncepciách s viacerými vláknami.

Terminológie HashSet a HashMap

Nižšie sú uvedené terminológie HashSet a HashMap:

1. Zbierka rámcov: Tento typ rámca umožňuje ukladanie a manipuláciu so skupinou objektov. Toto je kolektívna architektúra rozhraní, tried a algoritmov. Jednoducho povedané, rámec umožní postaviť budovu s rôznymi prvkami, ako sú tehla, cement, tyče atď., Čo sú rozhrania, triedy a algoritmy.

Táto architektúra bola navrhnutá s ohľadom na:

  • Tento rámec by mal byť vysoko výkonný.
  • Povoliť, aby rôzne typy zbierok fungovali podobne.
  • Ľahko prispôsobiteľné a prispôsobiteľné.

2. Zbierka: Ide o štandardné skupiny tried / rozhraní, z ktorých každá vykonáva zadané úlohy. Niektoré zo skupín sú plne implementované a niektoré poskytujú kostrovú podporu.

3. Hash: Hashing je funkcia, ktorá sa používa na mapovanie údajov ľubovoľnej veľkosti na hodnoty pevnej veľkosti.

4. HashSet: Ako už názov napovedá, tento typ predstavuje implementáciu množiny. Rozhranie množiny má jediný hashovaný prvok. Tento typ rozhrania nepovoľuje duplicitné prvky.

5. HashMap: Toto má implementáciu mapového rozhrania (asociatívnej mapy), kde existuje reprezentácia páru kľúč - hodnota. Tento typ rozhrania nepovoľuje duplicitné kľúče.

Podobnosti medzi HashSet a HashMap

  • Oba tieto koncepty sú nesynchronizované. To predstavuje nebezpečenstvo pre použitie vo variante závitovania. V prípade, že by sme ich chceli používať v prevádzke bez vlákien, museli by sme ich explicitne synchronizovať.
  • Neexistuje žiadna záruka, že poradie prvkov zostane nemenné.
  • Pri hlbšom kopaní vidíme, že zdrojový kód HashSet je podporovaný HashMapom.
    • Časový výkon pre základné operácie, ako je pridávanie / vkladanie, mazanie / odstraňovanie, je konštantný.
  • Obaja používajú rovnakú funkciu na zachovanie charakteristických prvkov v údajoch, použité metódy hashCode () a equals ().

Porovnanie Head to Head medzi HashSet vs HashMap (Infographics)

Nižšie je najlepších 8 porovnaní medzi HashSet vs HashMap:

Kľúčové rozdiely medzi HashSetom a HashMapom

  • Kľúčový rozdiel medzi HashSet a HashMap je v tom, že hashovacia funkcia použitá pre HashSet funguje iba na jednom prvku, zatiaľ čo v prípade HashMap táto funkcia funguje na dvoch prvkoch.
  • Pri vkladaní novej hodnoty do HashMap s už existujúcim kľúčom bude nová hodnota prepísaná na predchádzajúcu hodnotu. Zatiaľ čo v HashSet počas vkladania novej hodnoty, ktorá už existuje, vkladanie nie je povolené.
  • V HashSet sa objekty ukladajú. Napríklad reťazec HashSet bude zobrazený ako ('You', 'have', 'a', 'good', 'day'). V HashMap je podobná veta reprezentovaná párom kľúč - hodnota. Napríklad (1à'You ', 2à' have ', 3à' a ', 4à' good ', 5à' day '). Kľúč je celočíselný typ a hodnota je reťazec.
  • Pokiaľ ide o použitie, ak je úlohou vykonať kontrolu prítomnosti prvku, použijeme implementáciu sady. Kód je čistejší a zrozumiteľnejší. Ak úloha ukladá údaje pre elementy alebo vyžaduje rýchlejšie operácie vyhľadávania na základe kľúčov, použijeme implementáciu mapy.

Porovnávacia tabuľka HashSet verzus HashMap

V nasledujúcej tabuľke sú zhrnuté porovnania medzi HashSet verzus HashMap:

štýl Ako sa implementuje / používa v HashSet? Ako sa implementuje / používa v HashMap?
hierarchieHashSet je implementovaný pomocou nastaveného rozhrania rozšírením kolekčného rozhrania.HashMap má svoju hierarchiu a je úplne odlišný od rozhrania kolekcie.
Úložisko dátDáta sú uložené ako objekty v HashSetDáta v HashMap sú uložené ako pár kľúč - hodnota. Z hľadiska laikov majú údaje kľúč, ktorý musí byť zreteľný a ku kľúču musí byť priradená hodnota.
Vnútorná štruktúraInterne dátová štruktúra HashMap sa používa na ukladanie dátových prvkov v HashSet. Z hľadiska laikov, ak sa požaduje, aby sa údaje uložili pomocou HashSet, na uloženie sa použije interne HashMap.Interne HashMap používa na ukladanie údajov rad Vstupných objektov. Tu je kľúč k a „v“ je hodnota. A obidve spolu tvoria položku pre pár kľúč - hodnota.
Duplicitné hodnotyDuplicitné prvky nie sú povolené. Ak sa počas vkladania nájde duplicitný prvok, HashSet sa nezmení, pretože k vloženiu nedôjde.Prvky sa môžu v údajoch duplikovať. Kľúč by však mal byť jedinečný.
Operácia vkladaniaJeden objekt, tj hodnota, sa používa pre proces vkladania v HashSet. Na vloženie sa používa funkcia add ().Na vykonanie procesu vkladania sú potrebné dva objekty. Jeden musí byť kľúč a druhý ako hodnota. na vloženie sa používa metóda put ().
Výkon / zložitosťHodnoty v HashSet sa používajú na výpočet hodnoty hashcode. Hodnota hashcode sa používa na prístup k objektu. Táto hodnota môže byť rovnaká pre 2 hodnoty, čo ovplyvňuje výkon. Zložitosť HashSet je O (n).Hodnoty v HashMap sú spojené s jedinečnými kľúčmi. Tento kľúč sa používa na prístup k objektu. Preto sú operácie v HashMap rýchlejšie. Zložitosť HashMap je O (1). Na dosiahnutie poradia zložitosti O (1) je potrebný efektívny hashovací algoritmus.
používanieAk sa vyžaduje jedinečnosť údajov, použije sa HashSet. Napríklad uloženie týždňa dní.HashMap sa široko používa, kým nie je nevyhnutné zachovať jedinečnosť údajov.
Nulové hodnotyV HashSet je možné uložiť iba jednu nulovú hodnotu. „nulová“ hodnota sa považuje za jeden prvok a keďže duplicitné prvky nie sú povolené, preto je povolená iba jedna „nulová“ hodnota.Môže existovať viacero nulových hodnôt, ktoré môže HashMap uchovávať, pretože to nekladie žiadne obmedzenia na duplicitné hodnoty. Je však povolený iba jeden nulový kľúč, pretože v HashMap nie sú povolené duplicitné kľúče.

záver

Aj keď existujú výrazné rozdiely medzi HashSet a HashMap, niekedy sa používajú zameniteľne, čo by mohlo viesť k chybným implementáciám. Aj keď je HashMap interne používaný pre HashSet, môže sa stať, že sa dá zameniť bez veľkého odporu, ale jeho použitie musí byť opatrné. Kľúčové rozdiely v používaní uvedené vyššie by mohli poskytnúť dobrú platformu pre výber toho, ktorý typ sa má použiť.

Odporúčané články

Toto je vodítko k najvyššiemu rozdielu medzi HashSet verzus HashMap. Tu diskutujeme aj kľúčové rozdiely HashSet verzus HashMap s informačnými a porovnávacími tabuľkami. Ďalšie informácie nájdete aj v nasledujúcich článkoch -

  1. Dátové jazero vs. dátový sklad - najväčšie rozdiely
  2. Abstrakcia vs zapuzdrenie Top 6 Porovnanie
  3. GitHub vs SVN | Hlavné rozdiely
  4. Obmedzený partner vs generálny partner
  5. HashMap vs TreeMap