C#-List 排序

文章介绍了如何在C#中对系统内置类型如int、float等以及自定义类进行排序。对于自定义类,可以通过实现IComparable接口或使用委托函数(如匿名函数和Lambda表达式)来实现排序功能。示例代码展示了如何在List中使用Sort方法进行排序操作。
摘要由CSDN通过智能技术生成

系统自带的变量 (int,float,double,…) 一般都可以直接 Sort
​ 自定义类 Sort 有两种方式

  1. 继承接口 IComparable
  2. 在 Sort 中传入委托函数
internal class Item : IComparable<Item>                                                        
{                                                                                              
    public int money;                                                                          
                                                                                               
    public Item(int money) {                                                                   
        this.money = money;                                                                    
    }                                                                                          
                                                                                               
    public int CompareTo(Item other) {                                                         
        // 返回值的含义                                                                               
        // 小于0:                                                                                 
        // 放在传入对象的前面                                                                            
        // 等于0:                                                                                 
        // 保持当前的位置不变                                                                            
        // 大于0:                                                                                 
        // 放在传入对象的后面                                                                            
                                                                                               
        // 可以简单理解 传入对象的位置 就是0                                                                   
        // 如果你的返回为负数 就放在它的左边 也就前面                                                               
        // 如果你返回正数 就放在它的右边 也就是后面                                                                
                                                                                               
        if (money > other.money)                                                               
            return -1;                                                                         
        return 1;                                                                              
    }                                                                                          
}                                                                                              
                                                                                               
internal class ShopItem                                                                        
{                                                                                              
    public int id;                                                                             
                                                                                               
    public ShopItem(int id) {                                                                  
        this.id = id;                                                                          
    }                                                                                          
}                                                                                              
                                                                                               
internal class Program                                                                         
{                                                                                              
    private static void Main(string[] args) {                                                  
        Console.WriteLine("List排序");                                                           
                                                                                               
        // List自带排序方法                                                                
                                                                                               
        List<int> list = new List<int>();                                                      
        list.Add(3);                                                                           
        list.Add(2);                                                                           
        list.Add(6);                                                                           
        list.Add(1);                                                                           
        list.Add(4);                                                                           
        list.Add(5);                                                                           
        for (int i = 0; i < list.Count; i++) Console.WriteLine(list[i]);                       
        // list提供了排序方法                                                                          
        list.Sort();                                                                           
        Console.WriteLine("**************");                                                   
        for (int i = 0; i < list.Count; i++) Console.WriteLine(list[i]);                       
        // ArrayList中也有Sort排序方法                                                                 
                                                                                               
        // 自定义类的排序                                                                   
                                                                                               
        List<Item> itemList = new List<Item>();                                                
        itemList.Add(new Item(45));                                                            
        itemList.Add(new Item(10));                                                            
        itemList.Add(new Item(99));                                                            
        itemList.Add(new Item(24));                                                            
        itemList.Add(new Item(100));                                                           
        itemList.Add(new Item(12));                                                            
        // 排序方法                                                                                 
        itemList.Sort();                                                                       
        for (int i = 0; i < itemList.Count; i++) Console.WriteLine(itemList[i].money);         
                                                                                               
        // 通过委托函数进行排序                                                                
                                                                                               
        List<ShopItem> shopItems = new List<ShopItem>();                                       
        shopItems.Add(new ShopItem(2));                                                        
        shopItems.Add(new ShopItem(1));                                                        
        shopItems.Add(new ShopItem(4));                                                        
        shopItems.Add(new ShopItem(3));                                                        
        shopItems.Add(new ShopItem(6));                                                        
        shopItems.Add(new ShopItem(5));                                                        
                                                                                               
        // shopItems.Sort(SortShopItem);                                                        
        // 匿名函数                                                                                 
        // shopItems.Sort(delegate (ShopItem a, ShopItem b)                                     
        // {                                                                                    
        //     if (a.id > b.id)                                                                 
        //     {                                                                                
        //         return -1;                                                                   
        //     }                                                                                
        //     else                                                                             
        //     {                                                                                
        //         return 1;                                                                    
        //     }                                                                                
        // });                                                                                  
        // lambad表达式 配合 三目运算符的 完美呈现                                                             
        shopItems.Sort((a, b) => { return a.id > b.id ? 1 : -1; });                            
                                                                                                
        for (int i = 0; i < shopItems.Count; i++) Console.WriteLine(shopItems[i].id);          
                                                                                               
        #endregion                                                                             
    }                                                                                          
                                                                                               
    private static int SortShopItem(ShopItem a, ShopItem b) {                                  
        // 传入的两个对象 为列表中的两个对象                                                                    
        // 进行两两的比较  用左边的和右边的条件 比较                                                               
        // 返回值规则 和之前一样 0做标准 负数在左(前) 正数在右(后)                                                     
        if (a.id > b.id)                                                                       
            return -1;                                                                         
        return 1;                                                                              
    }                                                                                          
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值