Ero sanakirjan ja haastavan välillä

Sanakirja vs Hashtable

Sanakirja on kirjoitettu (s arvotyyppejä ei tarvitse kirjata), hashtablea ei (s arvotyypit tarvitsevat merkintää). Hashtablella on mukavampi tapa saada arvo kuin sanakirjassa IMHО, koska se tietää aina, että arvo on objektiivinen. Aina, jos käytät .NET 3.5, on helppo kirjoittaa laajennettu menetelmä sanakirjaan saadaksesi samanlainen käyttäytyminen.

Hashtable -luokka on tietynlainen sanakirjaluokka, joka käyttää kokonaislukuarvoa (kutsutaan hash) apuna avainten tallennuksessa. Hashtable -luokka käyttää hash-operaatiota nopeuttaaksesi tietyn avaimen hakua valikossa. Jokainen .NET: n objektiivi johtaa Оbject-luokkaan. Tämä luokka korvaa GetHash-menetelmän, joka palauttaa kokonaisluvun, joka yksilöi yksilöimällä objektin. Hashtable -luokka on yleensä erittäin tehokas valinnat. Ainoa Hashtable-luokan ongelma on, että se vaatii vähän otsikosta, ja pienille valinnoille (alle kymmenen elementtiä) pääotsikko voi estää suorituskykyä.

HashTable: n ja sanakirjan välillä on paljon enemmän merkitystä. Jos käytät indeksoijaa saadaksesi arvon HashTable-tiedostosta, HashTable palauttaa onnistuneesti nollan olemassa olevalle tuotteelle, kun taas Sanakirja näyttää virheen, jos yrität käyttää kohdetta hakemistolla, jota ei ole Sanakirjassa..

HashTable on heikosti kirjoitettu perusluokka; DictionaryBase-abstrakti luokka on kirjoitettu selkeästi ja käyttää sisäisesti HashTable-taulukkoa.

Oudoton asia, joka huomataan sanakirjasta puuttuu, on se, että kun lisäämme useita merkintöjä sanakirjaan, ylempi, johon merkinnät lisätään, säilyy. Siten, jos käytät hakua sanakirjassa, saat suositukset samassa järjestyksessä, johon olet lisännyt ne. Tämä ei kuitenkaan ole totta normaalissa HashTable -sovelluksessa, kun lisäät samat suositukset Hashtable -sovellukseen, toisin sanoen ei ylläpidetä. Jos 'Sanakirja perustuu Hashtable' on totta, miksi sanakirja ylläpitää viimeistä, mutta HashTable ei tee sitä?

Miksi he käyttäytyvät eri tavalla, se johtuu siitä, että Generic Dictionary toteuttaa hätkähdyttävän, mutta ei perustu System.Cоllectiоns.Hashtable. Generic Dictionary -ratkaisun toteutus perustuu kaikkien avain-arvo-pareiden jakamiseen luettelosta. Ne indeksoidaan sitten satunnaisesti käytettävillä älykkäillä kauhoilla, mutta kun se palauttaa luettelon, se vain kävelee luetteloa peräkkäisessä järjestyksessä - mikä on hyönteisten täyttöjärjestys niin kauan kuin merkintöjä ei käytetä uudelleen..