Разлика између речника и хештедета

Речник вс Хасхтабле

Речник је куцкан (тако да вредетипови не морају да користе боксинг), Хасхтабле није (тако да вредетипови морају да се боксују). Хасхтабле има љепши начин добивања вриједности од рјечника ИМХО, јер увијек зна да је вриједност објект. Ако користите .НЕТ 3.5, лако је написати екстензију метрике за речник да бисте добили слично понашање.

Хасхтабле класа је одређена врста речника класе која користи цела вредност (која се назива хасх) за помоћ у меморији својих кључева. Хасхтабле класа користи хасх да убрза претраживање одређеног кључа у колектику. Сваки објекат у .НЕТ потиче из класе Објецт. Ова класа подржава ГетХасх метод, који враћа цео број који јединствено идентификује објекат. Хасхтабле класа је уопште ефикасан колектик. Једино питање класе Хасхтабле је да захтева мало више од главе, а за мале колекције (мање од десет елемената) надземна глава може да спречи перформансе..

Постоји једна значајна разлика између ХасхТабле-а и Речника. Ако користите индексере да бисте добили вредност за ХасхТабле, ХасхТабле ће успешно вратити нулу за непостојећу ставку, док ће Речник погријешити ако покушате приступити ставци помоћу индекса, који не постоји у рјечнику..

ХасхТабле је основна класа која је слабо типизована; апстрактна класа ДицтионариБасе строго је уписана и интерно користи ХасхТабле.

Чудна ствар која је уочена код Рјечника је када додајемо више уноса у Рјечник, задржава се наруџба у коју су додани уноси. Према томе, ако примените неки рјечник на Речнику, добићете рецорде у оном кораку који сте их уметнули. Док, то није тачно са нормалним ХасхТабле-ом, када додате исте рецореде у Хасхтабле, наруџба се не одржава. Ако је 'Речник заснован на Хасхтабле' тачно, зашто Дицтионари одржава мање, али ХасхТабле нема?

Због чега се они другачије понашају, зато што Генериц Дицтионари имплементира хасхтабле, али није заснован на Систем.Цооллецтионс.Хасхтабле. Имплементација Генеричког речника заснива се на кориштењу парова кључ-вредност са листе. Затим се индексирају са кантама за приступање за приступ рандовима, али када се врати попис, он само креће по списку у редоследу - који ће бити уврштенији ако се уноси више не употребљавају.