Junior
C# да HashSet эмне?
sobes.tech AI
AIден жооп
HashSet<T> — бул тартипке салынбаган, уникалдуу элементтерден турган жыйнак. Ал хэш-таблицага негизделген жана элементтерди кошуу, өчүрүү жана бар экенин текшерүү операцияларын тез жүргүзөт (ортача убакытта, O(1)).
HashSet<T>тин негизги өзгөчөлүктөрү:
- Уникалдуулук: Кайталаган элементтерди камтыбайт. Эгерде бар элементти кошууга аракет кылынса, операция көз жаздымда калат.
- Тартипсиздик: Элементтер белгилүү бир тартипте сакталбайт. Итерирлөө тартиби кошуу тартибинен айырмаланышы мүмкүн.
- Иштөө ылдамдыгы: Хэш колдонуу менен, издөө, кошуу жана өчүрүү операциялары орто эсеп менен O(1) убакытта иштейт. Жаман хэш-функция же кагылышуулар болсо, иштөө ылдамдыгы төмөндөйт.
- Көптөгөн операциялар: Бириктирүү (
UnionWith), кесилиш (IntersectWith), айырма (ExceptWith), кичинекей же чоң жыйнактын текшерүүсү (IsSubsetOf,IsSupersetOf) сыяктуу ар түрдүү операцияларды колдойт.
Колдонуу мисалы:
// HashSet түзүү
HashSet<string> fruits = new HashSet<string>();
// Элементтерди кошуу
fruits.Add("алма");
fruits.Add("банан");
fruits.Add("апельсин");
fruits.Add("алма"); // Игнордолот, анткени "алма" алда канча бар
// Элементтин бар экенин текшерүү
bool hasBanana = fruits.Contains("банан"); // true
bool hasGrape = fruits.Contains("жүзүм"); // false
// Элементти өчүрүү
fruits.Remove("апельсин");
// Элементтерди өтүү
foreach (string fruit in fruits)
{
// Чыгуу: алма, банан (тартиби өзгөрүшү мүмкүн)
Console.WriteLine(fruit);
}
// Жыйнактын өлчөмү
int count = fruits.Count; // 2
HashSet<T> ICollection<T>, IEnumerable<T> жана ISet<T> интерфейстерин ишке ашырат, бул аны ар кандай жыйнактар сценарийлеринде колдонууга жана өзгөчө жыйнактар операцияларын жүргүзүүгө мүмкүндүк берет.