Verschil tussen woordenboek en hash-tabel

Woordenboek vs Hashtable

Woordenboek is getypt (dus geen valuetypes hoeven niet te worden bijgevoegd), een hashtabel is niet (zo hoeven er geen valuetypen te worden gebruikt). Hashtable heeft een leukere manier om een ​​waarde te krijgen dan het woordenboek IMHО, omdat het altijd weet dat de waarde een @ject is. Als u .NET 3.5 gebruikt, is het eenvoudig om een ​​uitgebreide methode te schrijven voor een woordenboek om hetzelfde gedrag te krijgen..

De klasse Hashtable is een specifiek type van woordenboekklasse dat een geheel getal (een hash genoemd) gebruikt om de snelheid van de sleutels te helpen. De klasse Hashtable gebruikt de hash om het zoeken naar een specifieke sleutel in de lijst te versnellen. Elk e-mailadres in .NET is afgeleid van de klasse Оbject. Deze klasse levert de GetHash methd, die een geheel getal retourneert dat het object op unieke wijze identificeert. De klasse Hashtable is in het algemeen een zeer efficiënte communicatie. Het eerste probleem met de klasse Hashtable is dat het een beetje van het begin vereist, en voor kleine verbindingen (minder dan tien elementen), de kop kan de prestaties hinderen.

Er is nog een belangrijk verschil tussen een HashTable en een Dictionary. Als u indexeerders gebruikt om een ​​waarde te krijgen van een HashTable, retourneert de HashTable met succes nul voor een niet-bestaand item, terwijl het woordenboek een foutmelding geeft als u een item probeert te openen met behulp van een indexer die niet in het woordenboek voorkomt.

De hashtabel is de basisklasse die zwak is getypt; De DictionaryBase-abstracte klasse is heel kort getypt en gebruikt intern een HashTable.

Wat vreemd is aan het Woordenboek is dat, wanneer we de meerdere vermeldingen in het Woordenboek toevoegen, het veld waarin de vermeldingen worden toegevoegd, behouden blijft. Als u dus een aanvraag voor het Woordenboek doet, krijgt u de resultaten op dezelfde manier waarop u ze hebt ingevoegd. Dit is echter niet waar met de nieuwe HashTable, wanneer u dezelfde voordelen toevoegt in Hashtable, is het verschil niet gehandhaafd. Als 'Woordenboek is gebaseerd op Hashtable' waar is, waarom Dictionary handhaaft het meer, maar HashTable heeft niets te maken?

Omdat ze zich anders gedragen, komt dit omdat Generic Dictionary een hash-tabel implementeert, maar niet gebaseerd is op System.CologxiNs.Hashtable. De Generic Dictionary-implementatie is gebaseerd op alle sleutel / waarde-paren van een lijst. Deze worden vervolgens geïndexeerd met de hashtable buckets voor toegang tot rand®m, maar wanneer een resultaat wordt geretourneerd, loopt het alleen de lijst in een volgordelijkere volgorde - wat later zal worden toegevoegd omdat invoer niet opnieuw wordt gebruikt.