C# HashTable vs Dictionary

Herkese merhaba, C# yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda Hashtable ve Dictionary sınıfları arasındaki farkları anlatacağım. Hadi başlayalım !
Table of Contents
Hashtable
Hashtable sınıfı, anahtar-değer çiftlerini depolamak için kullanılan bir veri yapısıdır. Hashtable sınıfı, anahtar-değer çiftlerini depolamak için bir DictionaryEntry nesnesi kullanır. Anahtar-değer çiftleri, eşleme olarak bilinen bir yapıda depolanır. Anahtar-değer çiftleri, herhangi bir veri türüne sahip olabilir. Ancak, anahtarlar benzersiz olmalıdır.
Hashtable sınıfı, Add ve Remove metodları aracılığıyla anahtar-değer çiftleri ekleyebilir veya kaldırabilir. Ayrıca, ContainsKey metodu, bir anahtarın Hashtable içinde bulunup bulunmadığını kontrol etmek için kullanılır.
Aşağıdaki örnekte, Hashtable sınıfı kullanılarak anahtar-değer çiftleri eklenebilir ve kaldırılabilir:
Hashtable hashtable = new Hashtable();
hashtable.Add("key1", "value1");
hashtable.Add("key2", "value2");
hashtable.Remove("key1");
Bu örnekte, Hashtable sınıfı kullanılarak key1 ve key2 anahtarlarına sahip iki farklı değer eklenir. Sonrasında, key1 anahtarı, Remove metodunu kullanarak hashtable veri yapısından kaldırılır.
Dictionary
Dictionary sınıfı, Hashtable sınıfına benzer şekilde anahtar-değer çiftlerini depolamak için kullanılan bir veri yapısıdır. Ancak, Dictionary sınıfı, anahtar-değer çiftleri için bir KeyValuePair nesnesi kullanır. Anahtar-değer çiftleri, Hashtable sınıfında olduğu gibi eşleme olarak depolanır. Dictionary sınıfı, Add ve Remove metodları aracılığıyla anahtar-değer çiftleri ekleyebilir veya kaldırabilir. Ayrıca, ContainsKey metodu, bir anahtarın Dictionary içinde bulunup bulunmadığını kontrol etmek için kullanılır.
Aşağıdaki örnekte, Dictionary sınıfı kullanılarak anahtar-değer çiftleri eklenebilir ve kaldırılabilir:
Dictionary<string, string> dictionary = new Dictionary<string, string>();
dictionary.Add("key1", "value1");
dictionary.Add("key2", "value2");
dictionary.Remove("key1");
Bu örnekte, Dictionary sınıfı kullanılarak key1 ve key2 anahtarlarına sahip iki farklı değer eklenir. Sonrasında, key1 anahtarı, Remove metodunu kullanarak dictionary veri yapısından kaldırılır.
Hashtable vs Dictionary
- Hashtable ve Dictionary sınıfları arasındaki en temel fark, kullanılan anahtar-değer nesneleridir. Hashtable sınıfı, DictionaryEntry nesneleri kullanırken, Dictionary sınıfı, KeyValuePair nesneleri kullanır.
- Dictionary sınıfı, genellikle Hashtable sınıfına göre daha hızlıdır. Bu, Dictionary sınıfının, anahtar-değer çiftlerini tutmak için bir dizi kullanması sayesinde olur. Bu, Dictionary sınıfının arama, ekleme ve kaldırma işlemlerinin daha hızlı olmasını sağlar.
- Hashtable sınıfı, herhangi bir veri türü için anahtar-değer çiftlerini depolamak için kullanılabilirken, Dictionary sınıfı, yalnızca belirli bir anahtar ve değer türü için kullanılabilir. Dictionary sınıfı, tür güvenliği sağlamak için jenerik bir yapıdadır.
Aşağıdaki örnekte, bir Hashtable ve bir Dictionary nesnesi kullanarak anahtar-değer çiftleri ekleyebilir ve kaldırabilirsiniz:
Hashtable hashtable = new Hashtable();
Dictionary<string, string> dictionary = new Dictionary<string, string>();
// Anahtar-değer çiftleri ekleme
hashtable.Add("key1", "value1");
dictionary.Add("key1", "value1");
// Anahtar-değer çiftleri kaldırma
hashtable.Remove("key1");
dictionary.Remove("key1");
Bu örnekte, hem Hashtable hem de Dictionary sınıfları kullanılarak key1 anahtarıyla birlikte value1 değeri eklendi. Daha sonra, her iki veri yapısından da key1 anahtarı ve ilgili değeri kaldırıldı.
Sonuç
Bu makalede, C# programlama dilinde Hashtable ve Dictionary veri yapılarının nasıl kullanılabileceği hakkında bir genel bakış verdik. Her iki veri yapısı da anahtar-değer çiftlerini depolamak için kullanılırken, farklı nesne tipleri kullanırlar ve performans açısından farklılık gösterirler. Kod örnekleri ile birlikte, Hashtable ve Dictionary sınıflarının kullanımı konusunda daha iyi bir anlayış elde etmenize yardımcı olacağımızı umuyoruz.
Evet C#’ta Hashtable ve Dictionary sınıfları arasındaki farklar bunlardı. Tüm C# yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.