Толь бичиг болон Hashtable хоёрын ялгаа

Толь бичиг болон Hashtable хоёрын ялгаа
Толь бичиг болон Hashtable хоёрын ялгаа

Видео: Толь бичиг болон Hashtable хоёрын ялгаа

Видео: Толь бичиг болон Hashtable хоёрын ялгаа
Видео: Difference between hashtable and dictionary in c# | Dictionary VS Hashtable c# 2024, Арваннэгдүгээр
Anonim

Толь бичиг ба Hashtable

Толь бичгийг бичдэг (тэгэхээр утгын төрлүүдэд хайрцаглах шаардлагагүй), Hashtable биш (тэгэхээр утгын төрлүүдэд хайрцаглах шаардлагатай). Hashtable нь IMHO толь бичгийг бодвол үнэ цэнийг олж авах илүү сайхан аргатай, учир нь энэ нь утгыг объект гэдгийг үргэлж мэддэг. Хэдийгээр та. NET 3.5 ашиглаж байгаа бол ижил төстэй зан төлөвийг олж авахын тулд толь бичигт зориулсан өргөтгөлийн аргыг бичихэд хялбар байдаг.

Hashtable анги нь түлхүүрээ хадгалахад туслах бүхэл тоо (хэш гэж нэрлэдэг) ашигладаг толь бичгийн тодорхой төрөл юм. Hashtable анги нь цуглуулгын тодорхой түлхүүрийн хайлтыг хурдасгахын тулд хэшийг ашигладаг. дахь объект бүр. NET нь Объект ангиас гаралтай. Энэ анги нь GetHash аргыг дэмждэг бөгөөд энэ нь объектыг өвөрмөц байдлаар тодорхойлох бүхэл тоог буцаадаг. Hashtable анги нь ерөнхийдөө маш үр дүнтэй цуглуулга юм. Hashtable классын цорын ганц асуудал бол бага зэрэг нэмэлт зардал шаарддаг бөгөөд жижиг цуглуулгуудад (араваас цөөн элемент) нэмэлт зардал нь гүйцэтгэлд саад учруулж болзошгүй юм.

HashTable болон толь бичгийн хооронд бас нэг чухал ялгаа бий. Хэрэв та HashTable-ийн утгыг авахын тулд индексжүүлэгчийг ашигладаг бол HashTable нь байхгүй зүйлийн хувьд тэгийг амжилттай буцаана, харин та толь бичигт байхгүй индексжүүлэгч ашиглан тухайн зүйлд хандахыг оролдвол толь бичиг алдаа гаргах болно.

HashTable нь сул бичигдсэн үндсэн анги юм; DictionaryBase хийсвэр анги нь дангаар бичигдсэн бөгөөд дотроо HashTable ашигладаг.

Толь бичигт анзаарагдсан нэг хачирхалтай зүйл бол толь бичигт олон оруулгыг нэмэхэд тухайн оруулгуудын дараалал хадгалагдана. Тиймээс, хэрэв та толь бичигт "fоreach"-ыг ашиглавал оруулсан бичлэгүүдээ оруулсан дарааллаар нь авах болно. Харин хэвийн HashTable-д энэ нь үнэн биш бөгөөд та Hashtable-д ижил бүртгэл нэмэхэд дараалал хадгалагдахгүй. Хэрэв 'Толь бичиг нь Hashtable дээр үндэслэсэн' нь үнэн бол яагаад толь бичиг дарааллыг хадгалдаг ч HashTable тэгдэггүй вэ?

Тэд яагаад өөр ааштай байдгийн тухайд гэвэл, Ерөнхий толь бичиг нь hashtable-г хэрэгжүүлдэг боловч System. Cоllectiоns. Hashtable дээр суурилдаггүйтэй холбоотой юм. Ерөнхий толь бичгийн хэрэгжилт нь жагсаалтаас түлхүүр-утга-хосыг хуваарилахад суурилдаг. Дараа нь тэдгээрийг санамсаргүй хандахын тулд hashtable хувингаар индексжүүлдэг боловч тоологчийг буцаах үед энэ нь жагсаалтын дагуу дараалсан дарааллаар явна.

Зөвлөмж болгож буй: