Különbség a szótár és a hashtable között

Szótár vs Hashtable

A szótár gépelésre kerül (tehát bizonyos értéktípusokat nem kell összekeverni), a hashtablet nem (a különféle értéketípusokat össze kell írni). A Hashtable szebb módszert kínál érték megszerzésére, mint az IMHО szótár, mert mindig tudja, hogy az érték objektum. Ha a .NET 3.5 verziót használja, akkor könnyű kiterjeszteni a metódusokat egy szótárba, hogy hasonló viselkedést kapjon..

A Hashtable osztály egy speciális típusú szótár osztály, amely egész számot (hash-nak neve) segíti a kulcsok tárolásában. A Hashtable osztály a hash segítségével gyorsítja fel a keresést egy adott kulcsra a műanyagban. A .NET-ben minden objektum az Оbject osztályból származik. Ez az osztály felülírja a GetHash metódot, amely olyan egész számot ad vissza, amely egyedileg azonosítja az objektumot. A Hashtable osztály általában nagyon hatékony műanyag. Az egyetlen probléma a Hashtable osztály esetében az, hogy egy kicsit fel kell vennie a fejet, és a kis fejjel (tíznél kevesebb elemnél) a fejléc akadályozhatja a teljesítményt.

Több különbség van a HashTable és a szótár között. Ha indexelőket használ a HashTable értékének megszerzéséhez, akkor a HashTable nem létező elemek esetén sikeresen érvénytelen lesz, míg a szótár hibát fog eredményezni, ha egy elemhez olyan mutatóval próbál hozzáférni, amely a szótárban még nem létezik..

A HashTable alapszintű, gyenge gépelésű; a DictionaryBase absztrakt osztály szigorúan be van írva, és belsőleg használja a HashTable-t.

A szótárban észlelt furcsa dolog az, hogy amikor a többszörös bejegyzéseket hozzáadjuk a szótárhoz, akkor az a sorrend, amelybe a bejegyzéseket hozzáadjuk, megmarad. Tehát, ha egy elérési utat alkalmaz a szótárban, akkor a visszaállítási standardokat ugyanabban a sorrendben fogja kapni, ahova beillesztette őket. Míg ez nem igaz a normál HashTable-nál, ha ugyanazokat a szabványokat hozzáadja a Hashtable-hez, akkor a rendszer nem tart fenn. Ha a 'Szótár alapja Hashtable' igaz, akkor miért tartja a Szótár a legfrissebbet, de a HashTable nem?

Miért eltérően viselkednek, az azért van, mert a Generic Dictionary megvalósít egy hashtable-t, de nem alapja a System.Cоllectiоns.Hashtable-nak. A Generikus szótár implementációja a kulcs-érték-párok összes listázásakor történő összesítésére épül. Ezeket azután indexelik a véletlenszerű hozzáférhető vödrökkel, de amikor egy számot ad vissza, akkor csak a sorozat sorozatába jár, amely a rovarok sorrendje, amint a bejegyzéseket nem használják újra..