Mega Code Archive

 
Categories / C# / Collections Data Structure
 

Use IComparer

/* C#: The Complete Reference  by Herbert Schildt  Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852 */ // Use IComparer.    using System;  using System.Collections;    // Create an IComparer for Inventory objects.  class CompInv : IComparer {    // Implement the IComparable interface.    public int Compare(object obj1, object obj2) {      Inventory a, b;      a = (Inventory) obj1;      b = (Inventory) obj2;      return a.name.CompareTo(b.name);    }  }    class Inventory {    public string name;    double cost;    int onhand;      public Inventory(string n, double c, int h) {      name = n;      cost = c;      onhand = h;    }      public override string ToString() {      return        String.Format("{0,-10}Cost: {1,6:C}  On hand: {2}",                      name, cost, onhand);    }  }    public class MailList {    public static void Main() {      CompInv comp = new CompInv();      ArrayList inv = new ArrayList();            // Add elements to the list      inv.Add(new Inventory("Pliers", 5.95, 3));      inv.Add(new Inventory("Wrenches", 8.29, 2));         inv.Add(new Inventory("Hammers", 3.50, 4));      inv.Add(new Inventory("Drills", 19.88, 8));        Console.WriteLine("Inventory list before sorting:");      foreach(Inventory i in inv) {        Console.WriteLine("   " + i);      }      Console.WriteLine();        // Sort the list using an IComparer.      inv.Sort(comp);        Console.WriteLine("Inventory list after sorting:");      foreach(Inventory i in inv) {        Console.WriteLine("   " + i);      }    }  }