C# List排序

  • 通过继承IComparable接口并重写

IComparable有两种,参数分别为泛型和object,方法类似,只是object需要通过as转换为指定类,稍微麻烦

class Item : IComparable<Item> {
    public int money;
 
    public Item(int money) {
        this.money = money;
    }
 
    public int CompareTo(Item other) {
        // 返回值的含义
        // 小于0:放在传入对象的前面
        // 等于0:保持当前位置不变
        // 大于0:放在传入对象的后面
 
        return this.money <= other.money ? -1 : 1;      // 小的放在前面
    }
}

调用:

List<Item> list = new List<Item>();
Random r = new Random();
 
for(int i = 0; i < 10; ++i) {
    int value = r.Next(1, 100);
    list.Add(new Item(value));
    Console.WriteLine(list[i].money);
}
 
list.Sort();
  • 通过委托函数进行排序

static int SortItem(Item a, Item b) {
    // 传入的两个对象为列表中的两个对象
    // 进行两两的比较,用左边的和右边的比较
    // 返回值规则和之前的一样
    return a.money <= b.money ? -1 : 1;     // 小的放前面
}

然后调用:

list.Sort(SortItem);

 

或者直接Lambda表达式:

list.Sort((a, b) => {
    return a.money <= b.money ? -1 : 1;
});

 

转载自:
Go_Accepted

posted @ 2022-08-02 11:44  青丝·旅人  阅读(326)  评论(0编辑  收藏  举报