C# HashTable Sınıfı

Merhabalar, C# derslerimize kaldığımız yerden devam ediyoruz. Bu dersimizde HashTable sınıfını anlatacağım. Hadi başlayalım !
HashTable sınıfı, System.Collections kütüphanesi altında bulunan bir sınıf ve key-value ilişkisi tutan bir koleksiyon görevi görmekte. Yani herhangi bir key değerine istediğimiz value değerini atayabilmekteyiz. Hem key hemde value değerleri object türünden veri kabul ediyor, yani aklımıza gelen herşeyi aynı anda bir HashTable içinde tutabiliriz. Fakat key değeri boş olamaz ve sonradan değiştirilemezken value değeri boş olabiliyor ve istenildiği zaman değiştirilebiliyor. HashTable kullanabilmek içinde tabiki yeni bir nesnesinin türetilmesi gerekiyor ve nesne türetiminden sonra HashTable ile alakalı olan herşeye erişebiliyoruz. Son olarak key değerleri benzersiz olmak zorundadır, yani iki tane verinin key değeri aynı olamaz fakat value değerleri için böyle bir sınırlama yok, aynı veriyi birden fazla HashTable elemanında value olarak ekleyebilirsiniz.
Bu kadar teorik bilgiden sonra şimdide HashTable sınıfı altında bulunan fonksiyon ve özelliklere sırayla bakalım. Öncesinde bir tane HashTable nesnesi oluşturalım ve her metod ve özelliği bu nesne üzerinden örneklendirelim.
HashTable table = new HashTable();
Add() Metodu: Fonksiyonun adından da belli olacağı üzere Add() metodu ile HashTable içerisine veri ekleyebilmekteyiz ve object tipinde key ve object tipinde value olmak üzere 2 tane parametre alıyor. Şöyle bir örnek verelim;
table.Add("softwaresup",".net");
table.Add(123, "ikinci veri");
table.Add(12.56, 1.5f);
Keys Özelliği Bu özellik ile HashTable içerisine eklediğimiz key değerlerine ICollection olarak ulaşabiliyoruz. Yani kısaca HashTable içerisindeki key değerlerini liste olarak bize sunuyor. Sonrasında foreach gibi bir döngüyle her bir key değeri üzerinde işlem yapabiliriz. Örneğin ben az önceki HashTable nesnesine eklediğimiz key değerlerini ekrana bastırayım.
foreach(var key in table.Keys)
Console.WriteLine(key);
Bu kodun ekran çıktısı şöyle olacaktır;

Values Özelliği: Bu özellikte HashTable içerisindeki value değerlerini liste olarak bize veriyor ve yine Keys özelliğinde olduğu gibi liste içerisindeki elemanlara istediğimiz şeyi uygulayabiliriz. Hadi gelin bunuda bir örnekle gösterelim.
foreach(var value in table.Values)
Console.WriteLine(value);
Bu kodun ekran çıktısını da şöyle bırakalım;

Console.WriteLine(table.ContainsValue("softwaresup"));
Console.WriteLine(table.ContainsValue(".net"));
Console.WriteLine(table.ContainsValue(1.5));
kodunun çıktısı şöyle olacaktır;

HashTable içerisinde value olarak .net olduğu true, 1.5 ve softwaresup olmadığı içinde false döndürdü ve her birini ekrana bastık. Dikkat edilmesi gereken nokta; biz HashTable içerisine value olarak 1.5f ekledik ve ContainsValue() fonksiyonu ile value değerleri arasında 1.5 araması yaptık ve bize false döndürdü. Mantık olarak baktığımızda 1.5f ile 1.5 aynı değerde fakat C# tarafından bakarsak 1.5f float tipte iken 1.5 double tiptedir yani değerleri eşit olsa bile tipleri farklı olduğundan bize false döndürdü. Buda demek oluyor ki, ContainsValue() fonksiyonu hem değer hemde tip kontrolü yapıyor ve her ikiside sağlanıyorsa true, aksi halde false döndürüyor.
Remove() Fonksiyonu: Bu fonksiyon adından da anlaşılacağı üzere HashTable içerisinden veri silmemizi sağlıyor ve silme işlemi key üzerinden oluyor. Yani silmek istediğimiz verinin key değerini fonksiyona göndermemiz gerekiyor. Fonksiyon void tipte yani geriye herhangi birşey döndürmüyor. Parametre olarak gönderilen key değeri liste içinde varsa siliyor, yoksa zaten bir şey yapmıyor ve sonlanıyor.
table.Remove(123);
table.Remove("deneme");
kod parçacıklarında 123 adında bir key olduğu için o veriyi silecek fakat deneme adında bir key olmadığı için herhangi bir işlem yapmayacaktır.
Count Özelliği: Count, C#’ta tüm liste tiplerinde bulunan bir özellik ve hepsinde de liste içerisindeki eleman sayısını veriyor. Aynı şekilde HashTable için kullandığımızda key-value çifti olan kaç tane verinin olduğunu söylemektedir.
Contains() Fonksiyonu: ContainsKey() fonksiyonu ile aynı görevi görmekte yani liste içerisindeki key değerleri arasında arama yapıyor ve aranan değer key olarak eklenmişse true, eklenmemişse false döndürüyor. Aslında Contains() fonksiyonu object tipinden gelen bir fonksiyon ve HashTable sınıfına özel birşey değil. Yani C#’ta kullandığımız tüm değişken ve sınıflarda bu fonksiyonu kullanabiliyoruz.
Clear() Fonksiyonu: Bu fonksiyon ile HashTable içerisindeki tüm verileri silebilir ve HashTable listesini boşaltabiliriz. Sadece liste içerisinde bulunan verileri siler, HashTable nesnesine herhangi bir müdahalede bulunmaz.
Evet bu dersimizde bu kadardı, artık HashTable sınıfını projelerinizde kullanabilecek kadar bilgi sahibi oldunuz 🙂 Tüm C# derslerimize buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.