日期:2014-05-20  浏览次数:20962 次

请教一个泛型 List<..> 的排序?(在线等)
请教一个泛型   List <..>   的排序问题:

class   Item   :   ICompable
{
        public   string   name;
        public   int   age;
       
        public   int   CompareTo(object   vlaue)
        {
            ...
        }
}

class   ItemCollect  
{
        public   IList <Item>   items   =   new   List <Item> ();
       
        public   void   Sort()
      {   ...}
}


问:   怎么实现   ItemCollect.Sort()   让   items   按照   Item实现的比较方法进行排序?

ItemCollect需要实现什么接口吗?

谢谢!



------解决方案--------------------
http://dev.csdn.net/article/20/20421.shtm

http://www.xdfbc.com/doc/cpp/1636261_sort_vector.htm
------解决方案--------------------
List.Sort (泛型 IComparer)

IComparer 是个接收两个参数的Int函数
==返回0
小于返回-1
大于返回1
至于怎么比较就自己按要求实现
------解决方案--------------------
为何不直接用SortedList?
------解决方案--------------------
items.Sort(delegate(Item item1, Item item2) { return item1.Compare(item2); });
------解决方案--------------------
对 实现IComparer接口
------解决方案--------------------
IList <Item> 你的Item实现了ICompable就可以按照你的方法去sort了呀,如果没有记错的话。
------解决方案--------------------
items.Sort(delegate(Item item1, Item item2) { return item1.Compare(item2); });
就可以。
如果要用IComparer,
class ItemComparer : IComparer <Item>
{
public int Compare(Item x, Item y)
{
return x.CompareTo(y);
}
}

然后要排序的时候:

public IList <Item> items = new List <Item> ();
items.Sort(new ItemComparer());