Forskjell mellom ordbok og Hashtable

Anonim

Ordbok vs Hashtable

Ordboken er skrevet (slik at verdsettetyper ikke trenger bоxing), en Hashtable er ikke verdsettetyper trenger bоxing). Hashtable har en finere måte å oppnå en verdi enn ordboken IMHО, fordi det alltid betyr verdien er et objekt. Alt om du bruker. NET 3. 5, er det enkelt å skrive en utvidelse med en ordbok for å få lignende oppførsel.

Hashtable-klassen er en spesifikk type ordboksklasse som bruker et heltall (kalles en hash) til hjelp i grunnen til tastene. Hashtable-klassen bruker hash for å øke søkingen etter en bestemt nøkkel i kulturen. Hvert objekt i. NET kommer fra Оbject-klassen. Denne klassen supplerer GetHash-metoden, som returnerer et heltall som unikt identifiserer objektet. Hashtable-klassen er en veldig effektiv kombinasjon generelt. Det eneste problemet med Hashtable-klassen er at det krever litt overhode, og for små kulturer (færre enn ti elementer) kan overhode hindre perfomranse.

Det er en viktig forskjell mellom en HashTable og Dictionary. Hvis du bruker indeksere for å få en verdi ut av en HashTable, returnerer HashTable null for et ikke-eksisterende element, mens ordboken vil bli en feil hvis du prøver å få tilgang til et element ved hjelp av en indekser som ikke finnes i ordboken.

HashTable er baseklassen som er svakt skrevet; DictionaryBase abstrakt klassen er strengt skrevet og bruker internt en HashTable.

En merkelig ting lagt merke til i boken er, når vi legger til flere oppføringer i ordboken, blir elementet der oppføringene legges til opprettholdt. Dermed hvis du bruker en ordbok i ordboken, vil du få oversikten i samme posisjon som du har satt inn dem. Mens dette ikke er sant med normal HashTable, når du legger til samme resuméer i Hashtable, blir resten ikke opprettholdt. Hvis 'Ordboken er basert på Hashtable' er sant, hvorfor ordbok opprettholder resten, men HashTable de ikke?

Som følge av hvorfor de oppfører seg annerledes, er det fordi Generic Dictionary implementerer en hashtable, men er ikke basert på System. Cоllectiоns. Hashtabellen. Generic Dictionary implementasjonen er basert på all-encoding nøkkelverdi-par fra en liste. Disse er deretter indeksert med hashtable skuffene for Random Access, men når den returnerer en enumerat, går den bare i rekkefølge i rekkefølge - som vil være den største i tillegg når innleggene ikke blir brukt igjen.