Diğer programlama dillerine kıyasla .NET diziler konusunda çok iyi durumda bu konumuzda anlatılacak olan sortedlist’in kullanımı array list ile aynıdır bu objenin ek olarak yapmış olduğu içerisinde değerleri alfabetik sıraya göre sıralamasıdır.
Sortedlist verileri key-value(anahtar-deger) olarak saklanmaktadır. Sortedlist’in farkı içerisindeki verileri sıralı olarak saklamasıdır. Sıralama key değerine göre asc(a-z) türünde yapılmaktadır. Sıralama metin yada sayısal değer üzerinden yapılabilmektedir.
SortedList ile ilgili olarak nasıl oluşturulur soruna cevap verelim aşağıdaki örnekte ulkeler adında bir sortedlist oluşturduk ve bunları sırasıyla consol’da yazdıracağız.
Örneğe Geçmeden Önce SortedList’in verileri key-value olarak sakladığını söylemiştik bu özelliği temel olarak key-value veri saklanması ile bildiğimiz Dictionary’lerden geldiğini söyleyebiliriz SortedList sınıfı Temel olarak IDictionary<TKey, TValue> ve bunun gibi altta göreceğiniz üzere birçok arayüzden türetilmiş bir sınıftır ama temel alınan IDictionary’dir.
1 2 3 4 | public class SortedList<TKey, TValue> : IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable, IDictionary, ICollection, IReadOnlyDictionary<TKey, TValue>, IReadOnlyCollection<KeyValuePair<TKey, TValue>> { // ... } |
Alttaki örnekte görüleceği gibi ulkeler adında bir sortedlist nesnesi oluşturduk ve add metoduyla key-value değerlerini set ederek elemanları ekledik daha sonra bu eklediğimiz elemanları kullanıcı arayüzü(user interface) tarafında görüntülemek için Listbox nesnesinin DataTextField Propert’sine kullanıcıya gözükecek değer olan sortedlist’in value’sunu göstermek için ‘Value’ yazıyoruz DataValueField ise kullanıcı tarafında gözükmeyen eleman değiştiğinde keyide arkaplanda değişen alandır çoğu yerde ‘selectedvalue’ property’sinin kullanarak karşılaştırmalar yaparız sonra olarakda sortedlist’imizi Listbox’in DataSource(VeriKaynağı) propert’sine aktarıyoruz bu işlemin aynısını RadioButtonList, CheckBoxList, DropDownList gibi v.b nesnelere kolayca aktarabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 | protected void Page_Load(object sender, EventArgs e) { var ulkeler = new SortedList(); ulkeler.Add("T", "Türkiye"); ulkeler.Add("A", "Almanya"); ulkeler.Add("F", "Fransa"); ulkeler.Add("I", "İngiltere"); ulkeler.TrimToSize(); ListBox1.DataTextField = "Value"; ListBox1.DataValueField = "Key"; ListBox1.DataSource = ulkeler; ListBox1.DataBind(); } |
Veritürü olarak object yani tüm değerleri key value parametresi olarak geçebiliyorsunuz. key boş değer içeremez ve değiştirilemez ama value değeri değiştirilebilir ve boş bırakılabilir.
Add Metodu: key-value olarak yeni bir eleman eklemek için kullanılabilecek bir metotdur.
Kullanımı: Add(key,value)
Örnek:
1 2 3 4 | var ulkeler = new SortedList() //Ulkelerk sortedlist'ine add metoduyla (key-value) değerleri set ediliyor ulkeler.Add("TR","Türkiye"); ulkeler.Add("TR","Türkiye"); |
Özellik | Açıklama |
---|---|
Capacity | SortedList’in alma ve ayarlama |
Count | SortedList’in eleman sayısını alma |
IsFixedSize | SortedList’in sabit bir boyuta sahip olup olmadığını öğrenme |
IsReadOnly | SortedList’in sadece okunabilir olup olmadığını öğrenme. |
Item | SortedList’den anahtar kullanarak alma ve ayarlama |
Keys | SortedList anahtarlarını alma. |
Values | SortedList değerlerini alma. |
S.N | Metod Adı / Amacı |
---|---|
1 | public virtual void Add( object key, object value ); SortedList’e yeni bir eleman eklemek için key ve value değerleri girilmektedir(key parametresi zorunludur) |
2 | public virtual void Clear(); SortedList’deki tüm elemanları temizle. |
3 | public virtual bool ContainsKey( object key ); Parametre olarak geçeceğimiz key değerinin SortedList’de olup olmadığını kontrol edip boolean değer döndürür. |
4 | public virtual bool ContainsValue( object value ); Parametre olarak geçeceğimiz value değerinin SortedList’de olup olmadığını kontrol edip boolean değer döndürür. |
5 | public virtual object GetByIndex( int index ); GetByIndex metoduna parametre olarak gireceğimiz index değerine karşılık olarak sortedlist’deki value değerini object olarak döndürür. |
6 | public virtual object GetKey( int index ); GetKey metoduna parametre olarak gireceğimiz index değerine karşılık olarak sortedlist’deki key değerini object olarak döndürür. |
7 | public virtual IList GetKeyList(); SortedListdeki tüm elemanların key değerlerini IList olarak döndürür. |
8 | public virtual IList GetValueList(); Sortedlistdeki tüm elemanların value değerlerini IList olarak döndürür. |
9 | public virtual int IndexOfKey( object key ); Parametre olarak geçeceğimiz key değerinin sortedlist’deki index değerini döndürür(sıfır tabanlı olarak) |
10 | public virtual int IndexOfValue( object value ); Parametre olarak geçeceğimiz value değerinin sortedlist’deki index değerini döndürür(sıfır tabanlı olarak) |
11 | public virtual void Remove( object key ); Parametre olarak geçeceğimiz key’e ait elemanı SortedList’den siler |
12 | public virtual void RemoveAt( int index ); Parametre olarak geçeceğimiz index’e göre SortedList elemanını siler |
13 | public virtual void TrimToSize(); SortedList’e tüm elemanlar eklendikten sonra kapasitesinin set edilmesi için kullanılması gereken metod’tur. |
Örnek Console Uygulaması
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | using System; using System.Collections; namespace CollectionsApplication { class Program { static void Main(string[] args) { SortedList sl = new SortedList(); sl.Add("001", "Murat ÖNER"); sl.Add("002", "M.Emin ÖZTÜRLER"); sl.Add("003", "Hakan GÜNER"); sl.Add("004", "Kasım Bozdemir"); sl.Add("005", "Emrah Bektaş"); sl.Add("006", "Burak Arıcı"); sl.Add("007", "Mücahit Akça"); if (sl.ContainsValue("Tayfun Kır")) { Console.WriteLine("Bu öğrencinin adı listede bulunmaktadır!"); } else { sl.Add("008", "Tayfun Kır"); } //keys değerlerini collection olarak alıyoruz ICollection key = sl.Keys; //foreach döngüsüyle dönüp ekrana yazdırıyoruz. foreach (string k in key) { Console.WriteLine(k + ": " + sl[k]); } } } } |
Ekran Çıktısı
Emeğinize sağlık çok faydalı bir makale olmuş
Teşekkür ederim. beğenmenize sevindim.