HashSet Nedir ve Nasıl Kullanılır?
HashSet, C# programlama dilindeki en yararlı veri yapılarından biridir. Bu makalede, bu benzersiz koleksiyon yapısını daha yakından tanıyacağız.
1. HashSet Nedir?
HashSet, tekrar etmeyen elemanlardan oluşan tek boyutlu bir koleksiyon yapısıdır. Yani aynı isimlerin veya sayıların bir listesi varsa, HashSet her birini sadece bir kez saklar. Diğer koleksiyon türlerine kıyasla, özellikle büyük veri kümeleri için erişim hızında üstünlük sağlar.
2. HashSet Nasıl Kullanılır?
- Oluşturma: HashSet’in örneği,
System.Collections.Generic
isim alanı altında oluşturulabilir.
HashSet<string> countries = new HashSet<string>();
- Eleman Ekleme:
Add()
yöntemiyle öğeler eklenir.
countries.Add("Turkey");
countries.Add("Germany");
countries.Add("France");
HashSet’in içeriği, eklediğimiz sırayla değil, otomatik olarak sıralanır.
- Eleman Çıkarma:
Remove()
yöntemiyle istenilen eleman çıkarılır.
countries.Remove("Germany");
- Eleman Sayısı:
Count
özelliğiyle eleman sayısına ulaşılır.
int countryCount = countries.Count;
- Eleman Sorgulama:
Contains()
yöntemiyle belirli bir elemanın olup olmadığı kontrol edilir.
if (countries.Contains("Turkey"))
{
Console.WriteLine("HashSet contains Turkey.");
}
HashSet’in Avantajları
- Bir koleksiyon içindeki her öğe, sadece bir gösterge tarafından erişilebilir olarak tutulur. Bu, hızlı sıralama ve arama işlemleri yapılırken değerlerin önbellekte saklandığı anlamına gelir.
- HashSet, tekrarlayan öğelerin engellenmesi için kullanılır. Bu, birden çok öğeden oluşan bir koleksiyona sahip olduğunuzda kullanışlıdır.
- Koleksiyon içindeki sıra, eklendiği sırayla değil, kendi içinde otomatik olarak sıralanır.
HashSet’in Dezavantajları
- HashSet, verilerin sırasını korumaz.
- HashSet, belirli bir elemanın indeksine erişim sağlamaz.
- HashSet, çift boyutlu bir koleksiyon veri yapısı sağlamaz.
HashSet, diğer liste türlerine göre bazı avantajları ve dezavantajları vardır. Aşağıda, HashSet’in performansı diğer liste türleri ile karşılaştırılmıştır:
- List
List, öğelerin sırayla saklandığı bir koleksiyon yapısıdır. List’in HashSet’e göre avantajları:
- Öğelerin sırası korunur.
- Öğelere indeks numaraları aracılığıyla erişebilirsiniz.
- Diğer koleksiyon türlerine kıyasla hafızada daha az yer kullanır.
Şimdilik, List koleksiyonu, HashSet ile karşılaştırıldığında dezavantajlıdır, çünkü:
- Yineleyen öğelere izin verir. Bu, HashSet’in temel avantajlarından biridir.
- Öğelerin aranması, sırasına bağlı olarak daha yavaş olabilir.
- Dictionary
Dictionary, bir anahtar-değer çiftini saklayabileceğiniz bir koleksiyon yapısıdır. Dictionary koleksiyonunun HashSet’e göre avantajları:
- Her bir anahtar, benzersiz olmalıdır. Bu, HashSet’in temel avantajlarından biridir.
- Anahtarlar arasında anahtar-ara değerleri eşleştirme yaparak doğrudan öğe aranabilir.
- Ancak, Dictionary koleksiyonunun dezavantajlarından biri, öğelerin sırasını korumamasıdır.
- SortedSet
SortedSet, elemanların benzersiz olduğu bir koleksiyon yapısıdır ve elemanlar sıralı olarak saklanır. SortedSet’in avantajları şunlardır:
- Elemanların benzersiz olması.
- Elemanların sıralı listesi
Ancak, SortedSet koleksiyonunun dezavantajları şunlardır:
Öğelere indeks numarası üzerinden doğrudan erişim olmaması.
Sıralama, elemanlar eklenirken zaman alabilir.
Özet
HashSet, benzersiz öğeleri bir koleksiyonda tutmak için kullanışlı bir veri yapısıdır. HashSet, yineleyen elemanları engeller, elemanların önbellekte saklanmasına izin verir ve hızlı arama işlemleri yapılırken performans optimizasyonu sağlar. Bu nedenle, özellikle büyük koleksiyonlar için çok yararlı bir veri yapısıdır. Ancak, sırayı korumaz ve belirli bir elemanın indeksine erişim sağlamaz.