C# Hashtable Kullanımı ve Örnekleri

Hashtable, önceki yazımda da bahsettiğim gibi bir koleksiyon sınıfıdır. Hashtable koleksiyonlarının temel özelliği, elemanlarının key (anahtar) ve value (değer) çiftleri ile saklanmasıdır.

Not: Hashtable içerisindeki key'lerin tümü birbirinden farklı olmalıdır.

Örnek: Bir sınıfta her bir öğrenciye bir adet dolap tahsis edildiğini ve hangi dolabın hangi öğrenciye ait olduğunu da C# programlama dili ile Hashtable kullanılarak saklandığını düşünelim.

Hashtable dolaplar = new Hashtable();
dolaplar.Add(1,"Ali");
dolaplar.Add(2,"Hakan");
dolaplar.Add(3,"Ayşe");
dolaplar.Add(4,"Fatma");
dolaplar.Add(5,"Tolga");

 

Okullar açıldığında 2. dolabın kime ait olduğu konusunda öğrenciler bize soru sorduklarında 2 no'lu (key) dolabın sahibini bulmak için;

System.Console.WriteLine(dolaplar[2]); //Hakan

 

7 numaralı bir dolap olup olmadığını tespit etmek için;

System.Console.WriteLine(dolaplar.ContainsKey(7)); //False

 

Ayşe'nin bir dolabu olup olmadığını kontrol etmek için (Hashtable içerisinde value araması)

System.Console.WriteLine(dolaplar.ContainsValue("Ayşe")); //True

 

Tüm dolapları ve sahiplerini yazdırmak için (Hashtable içerisindeki tüm key ve value'ları yazdırmak için):

foreach (DictionaryEntry dolap in dolaplar)
    Console.WriteLine("Dolap No: " + dolap.Key + " Sahibi: " + dolap.Value);

Çıktı:

Dolap No: 5 Sahibi: Tolga
Dolap No: 4 Sahibi: Fatma
Dolap No: 3 Sahibi: Ayşe
Dolap No: 2 Sahibi: Hakan
Dolap No: 1 Sahibi: Ali

 

Not: Hashtable key'leri farklı veri tiplerine de sahip olabilir. Örneğin plaka ile araç sahibi sözlüğü hazırlarken hem key hem de value değerleri string olabilir.

 

Önceki bazı diğer benzer yazılarım için;

bkz: C# ve Generic ile Non-Generic Koleksiyonlar Nelerdir?

bkz: C# ile params anahtar sözcüğü kullanımı ve örnekleri

bkz: C# Programlama Dilinde Koleksiyon Nedir?

bkz: Interface Nedir?

bkz: C# ile iki boyutlu ArrayList Tanımlamak

bkz: C# Hata Ayıklama Sürecinde Watch, Locals ve Autos Kullanımı

mbologlu

11.05.2021 04:52

Bu soru henüz yanıtlanmamış.

Bu soruya sadece kayıtlı kullanıcılar yanıt yazabilirler. Yanıt yazmak için lütfen giriş yapınız.

İnternet sitemizdeki deneyiminizi iyileştirmek için çerezler kullanıyoruz. Bu siteye giriş yaparak çerez kullanımını kabul etmiş sayılıyorsunuz. Daha fazla bilgi.