unity3dC#的List升序降序排序

简介: List.Sort有三种结果 1,-1,0分别是大,小,相等升序降序比较,默认List的排序是升序排序如果要降序排序,也很简单,只需要在前面加一个负号List tmp = new List(){5,1,22,11,4};// 升序tmp.

List.Sort有三种结果 1,-1,0分别是大,小,相等
升序降序比较,默认List的排序是升序排序
如果要降序排序,也很简单,只需要在前面加一个负号

List<int> tmp = new List<int>(){5,1,22,11,4};
//  升序
tmp.Sort((x, y) => x.CompareTo(y));
// 降序
tmp.Sort((x, y) => -x.CompareTo(y));
Console.WriteLine(tmp);
// 22,11,5,4,1

对于非数值类型比较用.CompareTo(...),基于IComparable接口。基本上C#的值类型都有实现这个接口,包括string。
而数值类型也可以自己比较。排序时左右两个变量必须是左-比较-右,切记不可反过来比较。
sort方法官方推荐的 命名方式是x(左),y(右) 。对于复杂的比较 可以分出来,单独写成函数
多权重比较
假设需要tuple里item2的值优先于item1。这个时候只要给比较结果*2即可。

List<Tuple<int, int>> tmp = new List<Tuple<int, int>>()
{
    new Tuple<int,int>(2,1),
    new Tuple<int,int>(53,1),
    new Tuple<int,int>(12,1),
    new Tuple<int,int>(22,3),
    new Tuple<int,int>(1,2),
};
tmp.Sort((x, y) => -(x.Item1.CompareTo(y.Item1) + x.Item2.CompareTo(y.Item2) * 2));
Console.WriteLine(tmp);
//22,3
//1,2
//53,1
//12,1
//2,1

// List按照指定字段进行排序

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

public class Test : MonoBehaviour
{
    public class MyInfo
    {
        public MyInfo(string name, int level, int age)
        {
            this.name = name;
            this.level = level;
            this.age = age;
        }
        public string name;
        public int level;
        public int age;
    }
    public List<MyInfo> myList = new List<MyInfo>();
    void Awake()
    {
        myList.Add(new MyInfo("A", 2, 9));
        myList.Add(new MyInfo("C", 8, 6));
        myList.Add(new MyInfo("B", 6, 7));
    }
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            // 兰姆达表达式,等级排序
            // 升序
            myList.Sort((x, y) => { return x.level.CompareTo(y.level); });
            // 降序
            myList.Sort((x, y) => { return -x.level.CompareTo(y.level); });
        }

    }
}
相关文章
|
6月前
|
Java
【Java基础】Java8 使用 stream().sorted()对List集合进行排序
【Java基础】Java8 使用 stream().sorted()对List集合进行排序
211 0
|
1月前
|
搜索推荐 算法 C++
list容器-排序案例讲解
list容器-排序案例讲解
9 0
|
1月前
|
算法 C++ 容器
list容器-反转和排序讲解39
list容器-反转和排序讲解39
14 0
|
2月前
|
Java
Java对list集合元素进行排序的几种方式
Java对list集合元素进行排序的几种方式
22 0
|
8月前
|
人工智能 Java API
一文学会List函数排序操作,20秒即可完成!
假设有一个用户管理系统,其中包含两个用户列表:一个是从数据库中获取的原始用户列表,另一个是从外部API获取的新用户列表。在这种情况下,用Java函数来实现将新用户列表中的数据合并到原始用户列表中的功能。
|
8月前
对List进行排序,值为null的排到最后
对List进行排序,值为null的排到最后
|
3月前
|
C++ 容器
【C++STL基础入门】list交换、翻转,排序、合并和拼接操作
【C++STL基础入门】list交换、翻转,排序、合并和拼接操作
|
4月前
|
C++ 容器
【C++】STL容器——探究List与Vector在使用sort函数排序的区别(14)
【C++】STL容器——探究List与Vector在使用sort函数排序的区别(14)
|
4月前
|
SQL JSON Java
Java【问题记录 02】对象封装+固定排序+list All elements are null引起的异常处理+Missing artifact com.sun:tools:jar:1.8.0
Java【问题记录 02】对象封装+固定排序+list All elements are null引起的异常处理+Missing artifact com.sun:tools:jar:1.8.0
43 0
|
5月前
|
人工智能 算法 机器人
List 函数排序操作,用对方法事半功倍!
作为一名程序员,以下这些场景你肯定不陌生, 1.数据分析和处理:在处理大量数据时,需要对数据进行排序以进行进一步的分析和处理。例如,在市场调研中,可能需要按照客户的购买频率对客户列表进行排序,以确定哪些客户最有可能购买产品或服务。 2.报表生成:在生成报表时,往往需要按照特定的顺序对数据进行排列,以便清晰地展示数据。例如,在制定销售报告时,可能需要按照销售额对产品进行排序,以了解哪些产品的销售额最高。 ......