Forskel mellem ordbog og Hashtable

Anonim

Ordbog vs Hashtable

Ordbog er skrevet (så værdietyper behøver ikke bоxing), en Hashtable er ikke (sо værdi typer skal bоxing). Hashtable har en pænere måde at opnå en værdi end ordbog IMHО, fordi det altid betyder værdien er et objekt. Det er meget, hvis du bruger. NET 3. 5, er det nemt at skrive en ekstensiv metode til ordbog for at få samme adfærd.

Hashtable-klassen er en specifik type af ordbogsklasse, der bruger en heltalværdi (kaldet hash) til hjælp i staargen af ​​dens nøgler. Hashtable-klassen bruger hash til at fremskynde søgningen efter en bestemt nøgle i kulturen. Hvert objekt i. NET stammer fra Оbject-klassen. Denne klasse supplerer GetHash-metoden, som returnerer et helt tal, der unikt identificerer objektet. Hashtable-klassen er et meget effektivt overblik generelt. Det eneste problem med Hashtable-klassen er, at det kræver lidt af hovedet, og for små virksomheder (færre end ti elementer) kan hovedet forhindre perfomance.

Der er en vigtig forskel mellem en HashTable og Dictionary. Hvis du bruger indeksere til at få en værdi ud af en HashTable, vil HashTable med succes returnere null til et ikke-eksisterende element, mens ordbogen bliver en fejl, hvis du forsøger at få adgang til et element ved hjælp af en indeksering, som ikke findes i ordbogen.

HashTable er den grundlæggende klasse, der er svagt skrevet; DictionaryBase abstrakt klassen er stærkt skrevet og bruger internt en HashTable.

En mærkelig ting bemærket over ordbog er, når vi tilføjer de mange indgange i ordbog, opretholdes den bruger, hvor posterne tilføjes. Således hvis du anvender en rækkevidde i ordbogen, vil du få recorrderne i samme rækkefølge, du har indsat dem. Mens dette ikke er tilfældet med normal HashTable, når du tilføjer samme anmeldelse i Hashtable, bliver ellers ikke vedligeholdt. Hvis 'Ordbog er baseret på Hashtable' er sandt, hvorfor Dictionary opretholder ellers men HashTable de ikke?

Som følge af hvorfor de opfører sig anderledes, skyldes det, at Generic Dictionary implementerer en hashtable, men er ikke baseret på System. Cоllectiоns. Hashtabelsamling. Den Generiske Ordbog implementering er baseret på all-encoding nøgle-værdi-par fra en liste. Disse er derefter indekseret med hashtable spande til rand-adgang, men når den returnerer en enumeration, går den bare i rækkefølge i rækkefølge - hvilket vil være det primære element så længe de ikke bliver genbrugt.