C# List的排序问题

在C#中,可以List来代替C++中Vector。

对于LIST的排序,需要使用到Sort()方法,为了让排序方式按照我们自己的想法进行,

可以通过IComparable接口重写CompareTo方法来实现。

例子:

有一个包含人名,年龄等信息的LIST,我们需要根据年龄做从大到小或者从小到大的排序,做法如下:

public class MyInfo:IComparable<MyInfo>//定义MyInfo类,并继承IComparable
{    
    public int age;
    public double value;
    public string name;
    public int CompareTo(MyInfo obj)//重写排序方法,本例中按年龄排序
    {
        int iresult=-1;
        if(this.age==obj.age)
        {
            iresult=0;
        }
        else if(this.age.CompareTo(obj.age)<0)//从小到大排序,如需要从大到小则用>即可
        {
            iresult=1;
        }
        else
        {
            iresult=-1;
        }
        return iresult;
    }
}

调用部分:

List <MyInfo> mystr=new List<MyInfo>();                
            int []agearray=new int[]{20,30,60,14,16,42,34,45,22,31};
            string []names=new string[]{"A","B","C","D","E","F","G","H","I","J"};            
            for(int i=0;i<10;i++)//在List中放入10个数据
            {MyInfo stem=new MyInfo();
                stem.name=names[i];
                stem.age=agearray[i];
                stem.value=i/3;                
            mystr.Add(stem);
            }            
            for(int i=0;i<10;i++)//显示一下排序前的效果          
            {
            lbLog.Items.Add("Name:"+mystr[i].name+",    age:"+mystr[i].age.ToString()+",    Score:"+mystr[i].value.ToString());  
            }
            lbLog.Items.Add("现在进行排序......");
            mystr.Sort();
            //mystr.s
            for(int i=0;i<10;i++)//显示一下排序后的效果
            {
            lbLog.Items.Add("Name:"+mystr[i].name+",    age:"+mystr[i].age.ToString()+",    Score:"+mystr[i].value.ToString());            
            }

运行结果:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值