Sobes.tech
Junior — Middle

Тарзии структураҳои додаҳо Dictionary ва HashSet дар бораи истифода ва сохтори дохилии онҳо чӣ гуна фарқ мекунанд?

sobes.tech AI

Ҷавоб аз AI

Dictionary ва HashSet дар C# структураҳои маълумот мебошанд, ки асосан дар рӯйхати хештаблиҳо асос ёфтаанд, аммо бо мақсадҳо ва сохторҳои гуногун:

  • Dictionary<TKey, TValue> маҷмӯаи ҷуфтҳои калид-арзиш мебошад. Имкон медиҳад, ки арзишро бо истифода аз калиди беназир зуд пайдо кунед. Дар дохили он истифодаи хешкунии калидҳо барои дастрасии зудро мекунад.

  • HashSet<T> маҷмӯаи уник ё элементҳои бидуни ҷуфтҳои калид-арзиш мебошад. Барои нигоҳ доштани маҷмӯаи объектҳои беназир ва барои ҷустуҷӯ, илова кардан ё хориҷ кардани зуд истифода мешавад.

Тафовутҳои асосӣ:

  • Dictionary ҷуфтҳоро нигоҳ медорад, HashSet танҳо калидҳо (элементҳо).
  • Dictionary имкон медиҳад, ки арзишро бо калид гиред, HashSet санҷиш мекунад, ки оё элемент мавҷуд аст ё не.

Масал:

var dict = new Dictionary<int, string>();
dict[1] = "як";

var set = new HashSet<int>();
set.Add(1);

bool hasKey = dict.ContainsKey(1); // true
bool hasElement = set.Contains(1); // true

Аз ин рӯ, вақте ки лозим аст, ки калид бо арзиш пайванд шавад, Dictionary-ро интихоб кунед, ва вақте ки муҳим аст, ки ягонагӣ ва ҷустуҷӯи зуд дошта бошед, HashSet-ро интихоб кунед.