Posted under C# (csharp)
Bu makalemizde HashTable koleksiyon sınıfını incelemeye çalışacağız. Bildiğiniz gibi Koleksiyonlar System.Collections namespace’inde yer almakta olup, birbirlerinin aynı veya birbirlerinden farklı veri tiplerinin bir arada tutulmasını sağlayan diziler oluşturmamıza imkan sağlamaktadırlar. Pek çok koleksiyon sınıfı vardır. Bugün bu koleksiyon sınıflarından birisi olan HashTable koleksiyon sınıfını inceleyeceğiz.
HashTable koleksiyon sınıfında veriler key-value dediğimiz anahtar-değer çiftleri şeklinde tutulmaktadırlar. Tüm koleksiyon sınıflarının ortak özelliği barındırdıkları verileri object tipinde olmalarıdır. Bu nedenle, HashTable’lardada key ve value değerleri herhangibir veri tipinde olabilirler. Temel olarak bunların her biri birer DictionaryEntry nesnesidir. Bahsetmiş olduğumuz key-value çiftleri hash tablosu adı verilen bir tabloda saklanırlar. Bu değer çiftlerine erişmek için kullanılan bir takım karmaşık kodlar vardır.
Key değerleri tektir ve değiştirilemezler. Yani bir key-value çiftini koleksiyonumuza eklediğimizde, bu değer çiftinin value değerini değiştirebilirken, key değerini değiştiremeyiz. Ayrıca key değerleri benzersiz olduklarında tam anlamıyla birer anahtar alan vazifesi görürler. Diğer yandan value değerline null değerler atayabilirken, anahtar alan niteliğindeki Key değerlerine null değerler atayamayız. Şayet uygulamamızda varolan bir Key değerini eklemek istersek ArgumentException istisnası ile karşılaşırız.
HashTable koleksiyonu verilere hızı bir biçimde ulaşmamızı sağlayan bir kodlama yapısına sahiptir. Bu nedenle özellikle arama maliyetlerini düşürdüğü için tercih edilmektedir. Şimdi konuyu daha iyi pekiştirebilmek amacıyla, hemen basit bir uygulama geliştirelim. Uygulamamızda, bir HastTable koleksiyonuna key-value çiftleri ekliyecek, belirtilen key’in sahip olduğu değere bakılacak, tüm HashTable’ın içerdiği key-value çiftleri listelenecek, eleman çiftlerini HashTable’dan çıkartacak vb… işlemler gerçekleştireceğiz. Form tasarımını ben aşağıdaki şekildeki gibi yaptım. Temel olarak teknik terimlerin türkçe karşılığına dair minik bir sözüğü bir HashTable olarak tasarlayacağız.

Şekil 1. Form Tasarımımız.
Şimdi kodlarımıza bir göz atalım.
| System.Collections.Hashtable htTeknikSozluk; /* HashTable koleksiyon nesnemizi tanimliyoruz.*/
private void Form1_Load(object sender, System.EventArgs e) private void btnEkle_Click(object sender, System.EventArgs e) private void lstAnahtar_DoubleClick(object sender, System.EventArgs e) MessageBox.Show(deger,lstAnahtar.SelectedItem.ToString()); private void btnSil_Click(object sender, System.EventArgs e) lstAnahtar.Items.Remove(lstAnahtar.SelectedItem); stbDurum.Text=htTeknikSozluk.Count.ToString(); private void btnTumu_Click(object sender, System.EventArgs e) ICollection anahtar=htTeknikSozluk.Keys; foreach(string a in anahtar) |
Şimdi uygulamamızı çalıştıralım.
