C# List集合排序方法小结

26 篇文章 1 订阅

今天我们来一起看一下关于集合List中的排序方法,大家都知道我们一般拿到一些数据的时候会放到一个容器中去,然后根据其中的一种属性来进行排序。我们很自然的就能想到sort()方法去自动排序。这样排序比较快,sort有三种结果 1,-1,0分别是大,小,相等。默认List的排序是升序排序,但是这个方法的后面有重载版本,今天我们一起来看一下吧!
首先我们来创建一个类吧!叫什么呢?就叫人类吧。

public class People
{
    public string name { get; set; }
    public int age { get; set; }

}

这个类有两个属性,一个是姓名,一个是年龄。接下来我们给它排序吧!

第一种:通过新建类的方式来排序

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TestListSort : MonoBehaviour
{
    private List<People> peoples = new List<People>();

    // Use this for initialization
    void Start()
    {
        peoples.Add(new People() { name = "小明", age = 21 });
        peoples.Add(new People() { name = "小李", age = 24 });
        peoples.Add(new People() { name = "小玉", age = 22 });
        peoples.Add(new People() { name = "小红", age = 18 });
        peoples.Add(new People() { name = "小王", age = 17 });

        peoples.Sort(new PeopleCompare());

        foreach (var people in peoples)
        {
            print(people.name + people.age);
        }
    }

    static int AgeCompare(People x, People y)
    {
        if (x.age > y.age)
        {
            return 1;
        }
        else if (x.age == y.age)
        {
            return 0;
        }
        else
        {
            return -1;
        }
    }


    class PeopleCompare : IComparer<People>
    {
        public int Compare(People x, People y)
        {
            return AgeCompare(x, y);
        }
    }
}



第二种使用委托Comparis来排序

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TestListSort : MonoBehaviour
{
    private List<People> peoples = new List<People>();

    // Use this for initialization
    void Start()
    {
        peoples.Add(new People() { name = "小明", age = 21 });
        peoples.Add(new People() { name = "小李", age = 24 });
        peoples.Add(new People() { name = "小玉", age = 22 });
        peoples.Add(new People() { name = "小红", age = 18 });
        peoples.Add(new People() { name = "小王", age = 17 });

        peoples.Sort(delegate (People p1, People p2)
        {
            return p1.age.CompareTo(p2.age);
        });

        foreach (var people in peoples)
        {
            print(people.name + people.age);
        }
    }

}


当然了,这样也可以用Lambda表达式来排序。显得更加的简洁。

 peoples.Sort((People p1, People p2) => p1.age.CompareTo(p2.age));

好了,这就是list中sort()方法的重载排序方法啦!今天就写到这里吧!

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值