List.Sort 排序

//数据类实现IComparable接口
public class Item : IComparable
{
    public string name;
    public float price;

    //先根据name排序,如果name相同则根据price排序
    public int CompareTo(object obj)
    {
        Item target = obj as Item;
        int ret = 0;
        ret = this.name.CompareTo(target.name);
        if (ret == 0)
            ret = this.price.CompareTo(target.price);

        return ret;
    }
}

public class ListSort : MonoBehaviour 
{
    private List
   
   
    
     items = new List
    
    
     
     ();

	void Start () {

        Item item1 = new Item();
        Item item2 = new Item();
        Item item3 = new Item();

        item1.name = "A";
        item1.price = 10;
        item2.name = "B";
        item2.price = 20;
        item3.name = "C";
        item3.price = 8;

        items.Add(item1);
        items.Add(item2);
        items.Add(item3);
    }

    void OnGUI()
    {
        if(GUILayout.Button("AA"))
        {
            //items.Sort();//如果数据类实现了IComparable接口则会自动调用内部的CompareTo函数进行排序
            //items.Sort(OnCompareTo);//如何数据类没有继承IComparable接口则可以通过此方法进行排序
        }

        if(GUILayout.Button("BB"))
        {
            for (int i = 0; i < items.Count; i++)
            {
                Debug.Log(items[i].name + "," + items[i].price);
            }
        }
    }
    
    //在调用items.Sort(OnCompareTo)方法是参数会自动传进来
    //先根据name排序,如果name相同则根据price排序
    private int OnCompareTo(Item left,Item right)
    {
        int ret = 0;
        ret = left.name.CompareTo(right.name);
        if (ret == 0)
            ret = left.price.CompareTo(right.price);

        return ret;
    }
}
    
    
   
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值