Verschil tussen Woordenboek en Hashtable

Anonim

Woordenboek vs Hashtable

Woordenboek is getypt (zo de waarde-types hoeven niet nodig te zijn), een Hashtable is niet (zoals waarderingstypes moeten bоxing hebben). Hashtable heeft een mooier manier om een ​​waarde te krijgen dan het woordenboek IMHО, omdat het altijd de waarde is, is een waarde. Zeker als je het gebruikt. NET 3. 5, het is gemakkelijk om een ​​extensiоn methode voor woordenboek te schrijven om hetzelfde gedrag te krijgen.

De Hashtable-klasse is een specifiek type woordenboekklas die een integerwaarde (een hash) -toets gebruikt in de streep van de toetsen. De Hashtable-klasse maakt gebruik van de hash om de zoektocht naar een specifieke sleutel in de collectie te versnellen. Elk object in.NET komt uit de klasse Оbject. Deze klasse onderscheidt het GetHash-methode, dat een geheel getal geeft dat het object uniek identificeert. De klasse Hashtable is een zeer efficiënte collectie in het algemeen. Het enige probleem met de Hashtable-klasse is dat het een beetje voorhoofd vereist, en voor kleine onderdelen (minder dan tien elementen) kan de voorhoede perfomrantie belemmeren.

Er is een ander belangrijk verschil tussen een HashTable en Dictionary. Als u indexers gebruikt om een ​​waarde uit een HashTable te krijgen, zal de HashTable succesvol null terugbrengen voor een bestaand item, terwijl het woordenboek een fout zal worden als u probeert om een ​​item te verkrijgen met behulp van een indexer die niet in het woordenboek bestaat.

De HashTable is de basisklasse die zwak is getypt; de DictionaryBase abstracte klasse is typisch getypt en gebruikt intern een HashTable.

Een vreemd ding opgemerkt buiten het Woordenboek is, wanneer we de meerdere vermeldingen in Woordenboek toevoegen, wordt de naam waarin de vermeldingen worden toegevoegd, gehandhaafd. Dus als u een woordenboek in het woordenboek toepast, ontvangt u de recensies in dezelfde plaats als u ze hebt geplaatst. Overwegende dat dit niet waar is bij de normale HashTable, wanneer u dezelfde recensies in Hashtable toevoegt, wordt de rest niet gehandhaafd. Als 'Woordenboek is gebaseerd op Hashtable', is het waar, waarom Woordenboek behoudt de andere maar HashTable niet?

Om redenen waarom ze zich anders gedragen, is het omdat Generic Dictionary een hashtable implementeert, maar is niet gebaseerd op Systeem. Cоllectiоns. Hash. De implementatie van het generieke woordenboek is gebaseerd op all-encoding sleutelwaardeparen van een lijst. Deze worden dan geïndexeerd met de haakbare emmers voor rand-toegang, maar als het een enumerator retourneert, loopt de lijst gewoon in opeenvolgende volgorde - wat de eerste van de invoegtoepassing zal zijn als de ingangen niet opnieuw worden gebruikt.