Herkese merhaba arkadaşlar bugün sizinle C# üzerinde HashTable kullanımını konuşacağız.
“C# – Diziler ve koleksiyonlar” başlıklı yazımda koleksiyonların avantajlarından, dezavantajlarından bahsedip, genel bilgi vermiştim. Bu yazımda ise bir koleksiyon sınıfı olan Hashtable‘dan bahsedeceğiz.
Öncelikle Hashtable non-generic bir koleksiyon türüdür.
Dizilerde elemanlar, belleğe sıralı bir şekilde yerleştirilmektedir. Sıfırdan başlanarak her bir elemana birer indeks değeri verilip, elemanlara o indeksler aracılığıyla erişmemiz sağlanmaktaydı.
Hashtable koleksiyonunda ise Anahtar(Key) ve Değer(Value) olmak üzere iki kavram karşımıza çıkmakta.
Bunu diziler üzerinden şöyle örneklendirebilirim;
eklediğimiz elemanlar (değer), o elemanlara erişmek için kullandığımız indeksleri de (anahtar) olarak düşünebilirsiniz.
Her bir Değerin farklı bir Anahtarı olmalıdır
yani koleksiyon içerisinde yer alan Anahtarlar birbirinden farklı olmalıdır.
şimdi HashTable'ı örneklerle pekiştirelim
En başta bu şekilde Hashtable'ı oluşturalım
C#:
Hashtable ht = new Hashtable();
Bu şekilde anahtar ve değerlerimizi ekliyoruz
C#:
// Add(Eklenecek_Anahtar, Eklenecek_Deger) Metodu
ht.Add("KaptanTR", 1415);
ht.Add("'CaptainKanka", 1072);
ht.Add("Coderx37", 198);
ht.Add("M R X", 1101);
ht.Add("'Adige", 9331);
DEĞER SORGULAMA
C#:
//ContainsKey(Aranan_Anahtar) Metodu
// Koleksiyon içerisinde, parametre olarak girilen değerde bir Anahtar(Key) mevcutsa TRUE değilse FALSE döndürecektir.
if (ht.ContainsKey("Coderx37"))
Console.WriteLine(ht["Coderx37"]);
else
Console.WriteLine("kullanıcı Bulunamadı.");
// ContainsValue(Aranan_Deger) Metodu
// Koleksiyon içerisinde, parametre olarak girilen ifadede bir Değer(Value) mevcutsa TRUE değilse FALSE döndürecektir.
if (ht.ContainsValue(1415))
Console.WriteLine("KaptanTR"+"\n---------------------");
else
Console.WriteLine("kullanıcı bulunamadı.");
TEMİZLEME FONKSİYONLARI
C#:
ht.Clear(); // tamamını temizleme fonksiyonu
ht.Remove("'CaptainKanka"); //Koleksiyon içerisinde, parametre olarak girilen değerde bir Anahtar(Key) mevcutsa;
// Anahtarı ve anahtarla ilişkili Değeri silecektir.
//captainKanka hocam kusura bakmasın :)
DEĞERLERİ VE ANAHTARLARI EKRANA YAZDIRMA
C#:
// Anahtarları(Keys) içeren bir koleksiyon döndürmektedir.
ArrayList arrayList = new ArrayList(ht.Keys);
foreach (object Anahtar in arrayList)
{
Console.WriteLine(Anahtar+"\n----------");
}
// değerli(values) içeren bir koleksiyon döndürmektedir.
ArrayList arrayList1 = new ArrayList(ht.Values);
foreach (object Deger in arrayList1)
{
Console.WriteLine(Deger+"\n --------");
}
ANAHTAR-DEĞER ÇİFTLERİNİN SAYISINI DÖNDÜRME
C#:
//Count Özelliği
//Koleksiyon içerisinde bulunan anahtar-değer çiftlerinin sayısını döndürmektedir.
Console.WriteLine(ht.Count);
OKUDUĞUNUZ İÇİN TEŞEKKÜR EDERİM.