Razlika između rječnika i stolarija

Rječnik vs Hashtable

Rječnik je upisan (s valuetypes-ovima za koje ne treba boksiranje), Hashtable nije (tako da tipove tipota trebaju boksirati). Hashtable ima ljepši način dobivanja vrijednosti od rječnika IMHO, jer se uvijek zna da je vrijednost objekt. Ako mislite da koristite .NET 3.5, lako je napisati ekstenzivnu metodu za rječnik kako biste dobili slično ponašanje.

Klasa Hashtable je određena vrsta rječnika klase koja koristi cjelobrojnu vrijednost (koja se naziva hash) za pomoć u pohrani svojih ključeva. Hashtable klasa koristi hash da ubrza pretraživanje po određenom ključu collectiona. Svaki objekt u .NET-u potječe iz klase Object. Ova klasa podržava GetHash metod, koji vraća cijeli broj koji jedinstveno identificira objekt. Hashtable klasa je vrlo učinkovit kolektik općenito. Jedini problem klase Hashtable je da zahtijeva malo više od glave, a za male kolekcije (manje od deset elemenata), nadzemna glava može spriječiti uspješnost.

Između HashTabela i Rječnika postoji jedna bitna razlika. Ako koristite indeksere za dobivanje vrijednosti HashTable-a, HashTable će uspješno vratiti null za nepostojeću stavku, dok će Rječnik pogriješiti ako pokušate pristupiti stavci pomoću indeksera koji ne postoji u Rječniku..

HashTable je osnovna klasa koja je slabo tipizirana; apstraktna klasa DictionaryBase strogo je upisana i interno koristi HashTable.

Neobična stvar primijećena u Rječniku je kada dodajemo više unosa u Rječnik, zadržava se red u koji smo dodali unosi. Stoga, primijenite li priručnik na Rječnik, dobit ćete recorde u onom koraku kao što ste ih umetnuli. Dok, ovo nije istina s normalnim HashTablom, kada dodate iste zapise u Hashtable, narudžba se ne održava. Ako je "Rječnik zasnovan na Hashtable" istinit, zašto Rječnik održava manje, ali HashTable ne znači?

Zbog čega se oni drugačije ponašaju, zato što Generic Dictionary implementira hashtable, ali nije zasnovan na System.Coollections.Hashtable. Provedba Generičkog rječnika temelji se na ukupnom korištenju parova ključ-vrijednost s popisa. Potom se indeksiraju s kantama za hashtable za pristup randovima, ali kad se vrati popis, on samo kreće po popisu u redoslijedu - što će biti umetanje ako se unosi više ne upotrebljavaju.