C# Generic SortedSet<T> Kullanımı
SortedSet<T> yapısı C#'ın generic collection yapılarından biridir. T ile belirttiğimiz tipte elemanlar tutar. C# 4.0 ile hayatımıza girmiş yapılardan biridir. Bu yapının en önemli özelliği listeyi sıralı tutmasıdır. Siz yeni bir eleman eklesenizde silsenizde liste yine sıralı olacaktır.
SortedSet ile int, string gibi tipler tutacaksak bu tipler IComparer interface'ini implemente ettiği için ekstra hiç bir şey yapmamıza gerek yoktur. Bu elemenları SortedSet'e ekleriz o arkada bunları sıralar. Peki Person isminde bir sınıf tutacaksak bunu nasıl sıralıyacak?
Bunun için kendi Comparer sınıfımızı yazmamış gerekir. Şimdi gelin bu durumu kod üzerinde inceleyelim:
Çıktı:
Örnek Proje: GenericSortedSetExample.rar
SortedSet ile int, string gibi tipler tutacaksak bu tipler IComparer interface'ini implemente ettiği için ekstra hiç bir şey yapmamıza gerek yoktur. Bu elemenları SortedSet'e ekleriz o arkada bunları sıralar. Peki Person isminde bir sınıf tutacaksak bunu nasıl sıralıyacak?
Bunun için kendi Comparer sınıfımızı yazmamış gerekir. Şimdi gelin bu durumu kod üzerinde inceleyelim:
public class Person { public string Name { get; set; } public string Surname { get; set; } public int Age { get; set; } public override string ToString() { return "Fullname: " + Name + " " + Surname + " Age: " + Age; } } public class PersonComparer : IComparer<Person> { public int Compare(Person x, Person y) { // 1: siralamada daha onde //-1: siralamada daha geride // 0: ayni sirada if (x.Age > y.Age) return 1; else if (x.Age < y.Age) return -1; else return 0; } } class Program { static void Main(string[] args) { //PersonComparer sinifi ile liste yasa gore sirali //hale getiriliyor. SortedSet<Person> personSortedSet = new SortedSet<Person>(new PersonComparer()); //SortedSet yapisina Person nesnelerini ekliyoruz personSortedSet.Add(new Person() { Name = "Salih", Surname = "Sayar", Age = 42 }); personSortedSet.Add(new Person() { Name = "Ahmet", Surname = "Yilmaz", Age = 21 }); personSortedSet.Add(new Person() { Name = "Safak", Surname = "Unel", Age = 26 }); // 3 person yasina gore sirali ekrana yaziliyor foreach (Person p in personSortedSet) { Console.WriteLine(p); } Console.WriteLine(); // 2 kisi daha ekleniyor personSortedSet.Add(new Person() { Name = "Sunay", Surname = "Tarik", Age = 23 }); personSortedSet.Add(new Person() { Name = "Eren", Surname = "Sahan", Age = 34 }); // yeni eklenen 2 person nesnesi sirali sekilde // eklenecektir. foreach (Person p in personSortedSet) { Console.WriteLine(p); } Console.ReadLine(); } }
Çıktı:
Örnek Proje: GenericSortedSetExample.rar
0 yorum :
Yorum Gönder