C# Hashtable Class

Merhaba arkadaşlar,

Collections nesnelerini daha iyi anlamak için System.Collection isim alanında bulunan bazı arayüzleri uygulayarak kendi koleksiyon nesnelerimizi geliştirip işin mutfağında neler oluyor öğrenmeye çalışmıştık. System.Collection isim alanında bulunan arayüzlerle ilgili serime burada ulaşabilirsiniz.

Bu yazımda System.Collection isim alanında bulunan koleksiyon tabanlı Hashtable sınıfını ele alacağız. Hashtable anahtar-değer ikilisi ile çalışan koleksiyon tabanlı bir sınıftır ve IDictionary arayüzünü uygulamaktadır. IDictionary arayüzünü uygulayarak anahtar-değer ikilisi olan bir koleksyion sınıfı geliştirmiştik. C# IDictionary Interface yazıma buradan ulaşabilirsiniz.

Bir koleksiyonda elemanlara indeks ile erişmek yerine anahtar-değer ikilisi ile erişmek isteyebiliriz. Bunu sağlayan System.Collection isim alanında bulunan Hashtable sınıfıdır. Hashtable sınıfında koleksiyonlar anahtar (key) – değer (value) ikilisi ile saklanmaktadır. Yani belirtilen anahtara ilişkin çeşitli değerleri tutmak için Hashtable sınıfını kullanabiliriz. Anahtar – değer ikilisi hash tablosunda saklanmaktadır. Her ikiliyi temsil eden bir hash kodu vardır. Bu hash kod anahtar-değer ikilisinin tek (unique) olmasını sağlamaktadır. Dolayısıyla bir anahtarın değerini elde etmek için kullanılan maksimum performans sağlanır.

Bir Hashtable nesnesinin yapısını aşağıdaki gibi gösterebiliriz.

Şimdi anahar-değer ikilisi ile çalışan bu sınıfı yakından tanıyalım.

Hashtable sınıfının Metotları ve Özellikleri

  • Yeni bir nesne oluşturmak
  • Add(Object, Object) metodu object türünde anahtar, değer parametresi alır. Bu parametrelerle koleksiyona yeni bir anahtar-değer ikilisi ekler

Not: Add metodu ile daha önceden eklenmiş bir anahtarı eklemeye çalışırsak ArgumentException hatasını alırız.

  • [] Indeksleyici yardımı ile koleksiyondaki bir elemana erişip o elemanın değerini değiştirebiliriz.
  • Clear() metodu koleksiyondaki elemanları siler
  • Contains(string) metodu string türünde anahtar parametresi alır. Belirtilen anahtarın koleksiyonda içerip içermediğini gösteren TRUE, FALSE değeri verir
  • ContainsValue(String) metodu string türünde bir değer parametresi alır. Belirtilen değerin koleksiyonda içerip içermediğini gösteren TRUE, FALSE değeri verir
  • Remove(String) metodu string türünden anahtar parametresi alır. Belirtilen anahtar koleksiyonda var ise değeri ile birlikte siler.

CopyTo(Array, Int32) metodu Array türünde dizi ve int türünde bir indeks parametresi alır. Belirtilen diziye koleksiyondaki öğeler belirtilen indeksten sonra kopyalanır

Count özelliği Koleksiyondaki anahtar-değer çiftinin sayısını döner

Keys özelliği Koleksiyondaki anahtarları ICollection türünde verir

Values özelliği Koleksiyonda bulunan değerleri ICollection türünde verir

Özellik ve Metot kodunun son hali

Hashtable sınıfına buradan daha detaylı bilgilere ulaşabilirsiniz.

Hashtable sınıfının özelliklerini ve metotlarını bir uygulama üzerinde pekiştirelim. Türkiye’deki illerin alan kodunu anahtar-değer ikilisinde saklayıp bu elemanları 3 farklı yöntem ile ekrana yazdıracağız. Her bir farklı yöntemle yazdırmadan önce koleksiyonumuzdan eleman silelim. Eleman silerken o elamanın koleksiyonda olup olmadığını da kontrol edelim. O zaman başlayalım. Bu uygulama için Console uygulaması açıyoruz.

Bu yazımda anahtar-değer ikilisine sahip .Net Platformunda hazır bulunan Hashtable sınıfını hakkında edindiğim bilgileri paylaşmaya çalıştım. Umarım faydalı olmuştur.

Bir sonraki yazımda System.Collection isim alanında hazır bulunan koleksiyon tabanlı SortedList sınıfını inceleyeceğiz. Bu sınıfın avantajlarını, dezavantajlarını ve kullanabilirliğini ele alacağız. Bir sonraki yazımızda görüşmek üzere 🙂

Kaynaklar:

Her Yönüyle C# 7.0, Sefer Algan, Pusula Yayincilik

https://docs.microsoft.com/tr-tr/dotnet/api/system.collections.hashtable?view=netframework-4.8

https://docs.microsoft.com/tr-tr/dotnet/csharp/programming-guide/concepts/collections

Leave a Comment