C# Dictionary Nedir? Nasıl Kullanılır?
Merhaba bu yazıda C#’taki Dictionary yapısından bahsedeceğiz ve bir kaç örnek ile açıklamaya çalışacağız. Dictionary yapısı, [Key, Value] ikilisinden oluşan bir Collection yapısıdır. Bazı programlama dillerinde ise bu yapı aşağıdaki örneklerdeki gibi adlandırılır:
- C# → Dictionary
- Java → Map
- Python → Dictionary
- PHP → Associative Arrays
Peki nedir bu [Key,Value] ikilisi? Daha iyi kafamızda canlandırmak için aşağıdaki örneği inceleyelim:
- Bir bakkalın elinde farklı çeşitlerde ve farklı sayılarda para var. Bu durumu basitçe Key paranın değeri, Value ise adeti olacak şekilde [Key,Value] ikilisini kullanarak modelleyelim:
KEY(Paranın Değeri) | VALUE(Paranın adeti) |
5 TL | 45 |
10 TL | 17 |
50 TL | 100 |
100 TL | 54 |
Yukarıdaki tablo üzerinden Key , Value ikilisini de anladık. Şimdi bir Dictionary üzerinden bunu nasıl modelleriz ona bakalım:
- İlk olarak bir Dictionary oluşturmamız gerekiyor. Bunun için
using System.Collections.Generic; ile namespace i programımıza dahil etmemiz gerekiyor.
- Daha sonra Dictionary nesnemizi oluşturabiliriz. Bu sınıf Generic bir sınıftır. Bu yüzden key ve value değerlerinin hangi tipte olduğunu belirtmemiz gerekiyor. Bizim durumumuz için key de value da integer olmalı.
Dictionary<int,int> paralar = new Dictionary<int,int>();
- Yapımızı oluşturduk fakat şu an içi boş. Yukarıdaki tablodaki değerleri oluşturduğumuz paralar Dictionary’sine ekleyelim. Bunun için add( ) metodunu kullanacağız.
paralar.Add(5,45);
paralar.Add(10,17);
paralar.Add(50,100);
paralar.Add(100,54);
- Yukarıda yaptığımız işlem ile tablodaki değerleri Dictionary’ye eklemiş olduk.
- Şimdi Dictionary’nin en çok kullanılan özelliklerine ve fonksiyonlarına bakalım:
- paralar[5] → 45
paralar[10] → 17
paralar[50] → 100
paralar[100] → 54
görüldüğü gibi köşeli parantez içerisine Key değeri yazıldığında Value dönmektedir.
- paralar.Keys → Key değerlerini bir collection olarak döndürür.
List<int> keys = paralar.Keys.ToList();
Bir integer listesine çevirmek için ise ToList( ) metodu kullanılabilir.
- paralar.Values → Value değerlerini bir collection olarak döndürür.
List<int> values = paralar.Values.ToList();
Bir integer listesine çevirmek için ise ToList( ) metodu kullanılabilir.
- paralar.Clear( ) → Bütün Key ve Value değerlerini temizler.
- Son olarak bir Dictionary içinde nasıl gezebiliriz ona bakalım. Bir döngü kullanarak iterasyon sağlayabiliriz ve içerisindeki bütün değerlere bu şekilde ulaşabiliriz.
Bütün Key ve Value değerlerini ekrana yazdıralım:
foreach (var item in paralar)
{
Console.WriteLine("[ " + item.Key + " , " + item.Value + " ]");
}
Yukarıdaki gibi her bir iterasyonda elde ettiğimiz item bir key ve bir value dan oluşmaktadır. Bizim durumumuzda item.Key para değerini, item.Value ise paranın adetini bize verecektir. Yukarıdaki kod parçasının çıktısı ise aşağıdaki gibidir.