C# Programming

C# Dictionary ile Hash Map’lerde Ustalaşma

Spread the love

C#, Java’daki gibi doğrudan “HashMap” adında bir sınıf sunmaz. Bununla birlikte, Dictionary<TKey, TValue> sınıfı eşdeğer işlevselliği sağlar ve hash map işlemleri için önerilen yaklaşımdır.

İçerik Tablosu

Dictionary<TKey, TValue>‘ı Hash Map Olarak Kullanma

Dictionary<TKey, TValue>, ekleme, silme ve alma gibi yaygın işlemler için O(1) ortalama zaman karmaşıklığına sahip bir anahtar-değer deposu sunar. TKey anahtar türünü, TValue ise ilişkili değer türünü belirtir. Kullanımını inceleyelim:

Dictionary Oluşturma ve Doldurma:


// Anahtar olarak string, değer olarak integer saklayacak bir dictionary oluşturun.
Dictionary<string, int> myDictionary = new Dictionary<string, int>();

// Add() kullanarak anahtar-değer çiftleri ekleyin
myDictionary.Add("apple", 1);
myDictionary.Add("banana", 2);
myDictionary.Add("cherry", 3);

// Ya da koleksiyon başlatıcı sözdizimi kullanın:
Dictionary<string, int> anotherDictionary = new Dictionary<string, int>()
{
    {"grape", 4},
    {"orange", 5}
};

Değerlere Erişim:

Değerleri anahtarlarını kullanarak alın. TryGetValue(), anahtarın yokluğunu ele aldığı için doğrudan indekslemeden daha güvenlidir:


int appleCount;
if (myDictionary.TryGetValue("apple", out appleCount))
{
    Console.WriteLine($"Elma sayısı: {appleCount}"); // Çıktı: Elma sayısı: 1
}
else
{
    Console.WriteLine("Elma bulunamadı.");
}

// Doğrudan erişim (anahtar yoksa KeyNotFoundException fırlatır)
try
{
    Console.WriteLine($"Muz sayısı: {myDictionary["banana"]}"); // Çıktı: Muz sayısı: 2
}
catch (KeyNotFoundException)
{
    Console.WriteLine("Anahtar bulunamadı.");
}

Dictionary’de Gezinme:


Console.WriteLine("Dictionary içeriği:");
foreach (KeyValuePair<string, int> kvp in myDictionary)
{
    Console.WriteLine($"Anahtar: {kvp.Key}, Değer: {kvp.Value}");
}

Elemanları Kaldırma:


myDictionary.Remove("banana"); 

Anahtar Varlığını Kontrol Etme:


if (myDictionary.ContainsKey("cherry"))
{
    Console.WriteLine("Kiraz mevcut.");
}

Gelişmiş Kullanım ve Hususlar

İplik güvenliği gerektiren senaryolar için ConcurrentDictionary<TKey, TValue> kullanın. Anahtarları seçerken, çakışmaları önlemek ve hash map verimliliğini korumak için GetHashCode() ve Equals()‘ı doğru bir şekilde uygulamalarını sağlayın. Bu hususları anlamak, optimum performans için çok önemlidir.

Sonuç

C#’daki Dictionary<TKey, TValue>, anahtar-değer depolaması için mükemmel performans sağlayan, HashMap’in etkili bir eşdeğeridir. Çok yönlülüğü, iplik güvenli alternatiflerin kullanılabilirliğiyle birleştiğinde, onu çeşitli C# uygulamaları için temel bir veri yapısı haline getirir.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir