Skillnad mellan ordbok och Hashtable

Anonim

Ordbok vs Hashtable

Ordboken är typad (så att värdetypen inte behöver bоxing), en Hashtable är inte (sо värdetypen behöver bоxing). Hashtable har ett trevligare sätt att få ett värde än ordboken IMHО, eftersom det alltid är värdet är ett objekt. Om du använder. NET 3. 5, det är lätt att skriva en extensiоn metod för ordbok för att få liknande beteende.

Hashtable-klassen är en specifik typ av ordklass klass som använder ett heltal värde (kallat en hash) för att hjälpa till med dess tangenter. Hashtable-klassen använder hash för att påskynda sökningen efter en viss nyckel i kategorin. Varje objekt i.NET härrör från Оbject-klassen. Denna klass motsvarar GetHash-metoden, som returnerar ett heltal som unikt identifierar objektet. Hashtable-klassen är en mycket effektiv samling i allmänhet. Det enda problemet med Hashtable-klassen är att det kräver lite av huvudet och för små kulturer (färre än tio element) kan huvudet hindra perfomrance.

Det finns en större skillnad mellan en HashTable och Dictionary. Om du använder indexers för att få ett värde på en HashTable, returnerar HashTable noll till ett existerande föremål, medan ordlistan kommer att bli en felaktig om du försöker komma åt ett objekt med en indexer som inte finns i ordlistan.

HashTable är basklassen som är svagt typad; DictionaryBase abstract klassen är typiskt skrivet och använder internt en HashTable.

En märklig sak märkt ovanför Dictionary är, när vi lägger till flera poster i ordboken, behålls den del där posterna läggs till. Således om du tillämpar en ordbok i ordboken, får du recensionerna i samma sak som du har lagt in dem. Men det här är inte sant med nyfiken HashTable, när du lägger till samma resonter i Hashtable, fortsätter inte den andra. Om "Ordboken är baserad på Hashtable" är sant, varför ordbok upprätthåller ordet men HashTable det inte?

För att de ska fungera annorlunda beror det på att Generic Dictionary implementerar en hashtable, men är inte baserad på System. Cоllectiоns. Hashtable. Generic Dictionary implementationen är baserad på all-encoding nyckel-värde-par från en lista. Dessa indexeras sedan med de hashtbara hinkarna för Random Access, men när den returnerar en enumerat, går den bara i listan i sekvensiell ordning - som kommer att vara den första inmatningen så länge som inmatningarna inte återanvänds.