博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
unity3dC#的List升序降序排序
阅读量:6349 次
发布时间:2019-06-22

本文共 1786 字,大约阅读时间需要 5 分钟。

List.Sort有三种结果 1,-1,0分别是大,小,相等

升序降序比较,默认List的排序是升序排序
如果要降序排序,也很简单,只需要在前面加一个负号

List
tmp = new List
(){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
> tmp = new List
>(){ new Tuple
(2,1), new Tuple
(53,1), new Tuple
(12,1), new Tuple
(22,3), new Tuple
(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
myList = new List
(); 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); }); } }}

转载地址:http://rytla.baihongyu.com/

你可能感兴趣的文章
转 常见视频编码方式以及封装格式
查看>>
灾后重建
查看>>
Nothing 和 Is
查看>>
第一个sprint冲刺第三天
查看>>
【As Easy As A+B - 专题训练-排序】
查看>>
cocos creator 底部按钮touch延迟
查看>>
vue中的input使用e.target.value赋值的问题
查看>>
数据库跨库访问问题
查看>>
关于FindComponent的使用,简化一些过程
查看>>
jq动态生成数据后绑定事件
查看>>
||和 && 符号的赋值运用(转)
查看>>
post提交返回json格式
查看>>
Java.lang 包中的Void类型
查看>>
正确理解linux grep 的姿势
查看>>
C语言程序设计第十次作业
查看>>
Android防止内存溢出浅析
查看>>
jquery 获取$("#id").text()里面的值 需要进行去空格去换行符操作
查看>>
多个Class作用于同一个元素的结果分析
查看>>
深入理解Lustre文件系统-第10篇 LNET:Lustre网络
查看>>
20155224聂小益的Linux学习
查看>>