Mega Code Archive

 
Categories / C# / Collections Data Structure
 

Sorting and Searching

using System; using System.Collections; public class IComparerasaProperty {     public static void Main()     {         Employee[] arr = new Employee[4];         arr[0] = new Employee("A", 1);         arr[1] = new Employee("B", 2);         arr[2] = new Employee("C", 4);         arr[3] = new Employee("D", 3);                  Array.Sort(arr, Employee.SortByName);         // employees is now sorted by name                  foreach (Employee emp in arr)         Console.WriteLine("Employee: {0}", emp);                  Array.Sort(arr, Employee.SortById);         // employees is now sorted by id                  foreach (Employee emp in arr)         Console.WriteLine("Employee: {0}", emp);                  ArrayList arrList = new ArrayList();         arrList.Add(arr[0]);         arrList.Add(arr[1]);         arrList.Add(arr[2]);         arrList.Add(arr[3]);         arrList.Sort(Employee.SortByName);                  foreach (Employee emp in arrList)         Console.WriteLine("Employee: {0}", emp);                  arrList.Sort();    // default is by id                  foreach (Employee emp in arrList)         Console.WriteLine("Employee: {0}", emp);     } } public class Employee: IComparable {     public Employee(string name, int id)     {         this.name = name;         this.id = id;     }          int IComparable.CompareTo(object obj)     {         Employee emp2 = (Employee) obj;         if (this.id > emp2.id)         return(1);         if (this.id < emp2.id)         return(-1);         else         return(0);     }          public static IComparer SortByName     {         get         {             return((IComparer) new SortByNameClass());         }     }          public static IComparer SortById     {         get         {             return((IComparer) new SortByIdClass());         }     }          public override string ToString()     {         return(name + ":" + id);     }          class SortByNameClass: IComparer     {         public int Compare(object obj1, object obj2)         {             Employee emp1 = (Employee) obj1;             Employee emp2 = (Employee) obj2;                          return(String.Compare(emp1.name, emp2.name));         }     }          class SortByIdClass: IComparer     {         public int Compare(object obj1, object obj2)         {             Employee emp1 = (Employee) obj1;             Employee emp2 = (Employee) obj2;                          return(((IComparable) emp1).CompareTo(obj2));         }     }          string    name;     int    id; }