Csharp/C Sharp/Collections Data Structure/SortedDictionary — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Текущая версия на 11:39, 26 мая 2010
Use SortedDictionary to store class implementing System.IComparable
using System;
using System.Collections.ObjectModel;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Serialization;
public class Customer : System.IComparable {
private int _id;
private string _name;
private string _rating;
private static SortOrder _order;
public enum SortOrder {
Ascending = 0,
Descending = 1
}
public Customer(int id, string name)
: this(id, name, "Other") {
}
public Customer(int id, string name, string rating) {
this._id = id;
this._name = name;
this._rating = rating;
}
public int Id {
get { return this._id; }
set { this._id = value; }
}
public string Name {
get { return this._name; }
set { this._name = value; }
}
public string Rating {
get { return this._rating; }
set { this._rating = value; }
}
public static SortOrder Order {
get { return _order; }
set { _order = value; }
}
public override bool Equals(Object obj) {
bool retVal = false;
if (obj != null) {
Customer custObj = (Customer)obj;
if ((custObj.Id == this.Id) &&
(custObj.Name.Equals(this.Name) &&
(custObj.Rating.Equals(this.Rating))))
retVal = true;
}
return retVal;
}
public override string ToString() {
return this._id + ": " + this._name;
}
public int CompareTo(Object obj) {
switch (_order) {
case SortOrder.Ascending:
return this.Name.rupareTo(((Customer)obj).Name);
case SortOrder.Descending:
return (((Customer)obj).Name).rupareTo(this.Name);
default:
return this.Name.rupareTo(((Customer)obj).Name);
}
}
}
class Program {
public static void Main(){
Dictionary<int, Customer> custDict = new Dictionary<int, Customer>();
custDict[99] = new Customer(99, "H", "P");
custDict[77] = new Customer(77, "B", "G");
custDict[55] = new Customer(55, "B", "S");
custDict[88] = new Customer(88, "B", "P");
Dictionary<int, Customer>.ValueCollection unsortedValues;
unsortedValues = custDict.Values;
foreach (Customer cust in unsortedValues)
Console.Out.WriteLine("Customer Name: {0}", cust.Name);
SortedDictionary<int, Customer> sortedDict;
sortedDict = new SortedDictionary<int, Customer>(custDict);
SortedDictionary<int, Customer>.ValueCollection sortedValues;
sortedValues = sortedDict.Values;
foreach (Customer cust in sortedValues) {
Console.Out.WriteLine("Customer->{0}", cust.Name);
}
sortedDict.Remove(88);
sortedValues = sortedDict.Values;
foreach (Customer cust in sortedValues) {
Console.Out.WriteLine("Customer->{0}", cust.Name);
}
}
}