C# List.sort排序详解(多权重,升序降序)
很多人可能喜欢Linq的orderBy排序,可惜U3D里面linq在Ios上会报错,所以就必须使用list的排序。
其实理解了并不难
升序降序比较
sort有三种结果 1,-1,0分别是大,小,相等。
默认List的排序是升序排序
如果要降序排序,也很简单,只需要在前面加一个负号
List<int> tmp = new List<int>(){,,,,};
tmp.Sort((x, y) => -x.CompareTo(y));
Console.WriteLine(tmp);
//22,11,5,4,1
对于非数值类型比较用.CompareTo(...),基于IComparable接口。基本上C#的值类型都有实现这个接口,包括string。
而数值类型也可以自己比较。排序时左右两个变量必须是左-比较-右(被比较),切记不可反过来用。
微软官方推荐的参数命名方式是x(左),y(右)
多权重比较
假设需要tuple里item2的值优先于item1。这个时候只要给比较结果*X。
List<Tuple<int, int>> tmp = new List<Tuple<int, int>>()
{
new Tuple<int,int>(,),
new Tuple<int,int>(,),
new Tuple<int,int>(,),
new Tuple<int,int>(,),
new Tuple<int,int>(,),
};
tmp.Sort((x, y) => -(x.Item1.CompareTo(y.Item1) + x.Item2.CompareTo(y.Item2) * ));
Console.WriteLine(tmp);
//22,3
//1,2
//53,1
//12,1
//2,1
//Tip: Item2 > Item1
如果单独对升序降序控制,可以去掉大括号,分开处理
C# List.sort排序详解(多权重,升序降序)的更多相关文章
- C# List.sort排序(多权重,升序降序)
很多人可能喜欢Linq的orderBy排序,可惜U3D里面linq在Ios上会报错,所以就必须使用list的排序. 其实理解了并不难 升序降序比较 sort有三种结果 1,-1,0分别是大,小,相等. ...
- Java中Collections.sort()排序详解
public static void main(String[] args) { List<String> list = new ArrayList<String>(); ...
- js数组的sort排序详解
<body> <div> sort()对数组排序,不开辟新的内存,对原有数组元素进行调换 </div> <div id="showBox" ...
- java中Collections.sort排序详解
Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f, ...
- (网页)java中Collections.sort排序详解(转)
转自CSDN: Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b, ...
- [转]java中Collections.sort排序详解
Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e, ...
- sort 排序详解
http://www.qdfuns.com/notes/17398/c56832f62b3271e79671f77dcdd2c058.html. http://www.qdfuns.com/notes ...
- linux sort 命令详解(转 )
linux sort 命令详解 sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始! 1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比 ...
- sorted()排序详解
sorted()排序详解 http://wiki.python.org/moin/HowTo/Sorting?highlight=%28howto%29#The_Old_Way_Using_t ...
随机推荐
- DOM中事件绑定补充方法
先将上一篇文章中提到的为元素增加事件的方法和移除事件的方法拿过来: <span style="font-size:18px;">//跨浏览器添加事件 function ...
- JS学习笔记-1--基本知识和注意事项
1.JS开始的目的主要是验证表单的输入验证 2.是一种具有面向对象能力的.解释型语言.是基于事件驱动的相对较安全的客户端脚本语言 3.JS 特点:松散型:变量不具备一个明确的类型: 对象属性:把属 ...
- lle算法
http://www.pami.sjtu.edu.cn/people/xzj/introducelle.htm
- DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
这个类型的resource 后面多个SRGB 表示SRGB空间是指gamma 矫正系数为2.2的色彩空间,这个问题我没有问别人,是我自己是上网查的,我觉得我不是个女人了......我又level up ...
- [百度空间] [note] pointer to member is a POD type
C++03 3.9-10: 1 Arithmetic types (3.9.1), enumeration types, pointer types, and pointer to member ty ...
- .NET设计模式(18):迭代器模式(Iterator Pattern)(转)
概述 在面向对象的软件设计中,我们经常会遇到一类集合对象,这类集合对象的内部结构可能有着各种各样的实现,但是归结起来,无非有两点是需要我们去关心的:一是集合内部的数据存储结构,二是遍历集合内部的数据. ...
- 一个利用window.name实现的windowStorage
//key:value|key:value var windowStorage = { _inited: false, _data: {}, init: function(str) { var tmp ...
- 用DIV+CSS切割多背景合并图片 CSS Sprites 技术
很久之前就在互联网网站和一些js插件中见过这种技术的应用,当时觉得很麻烦,就没有用,也没有去深究. 近段时间一直在做前台的一些东西,涉及到很多div+css的问题.这个东东我又碰到了,所以我花了点时间 ...
- 7 天玩转 ASP.NET MVC — 第 7 天
目录 第 1 天 第 2 天 第 3 天 第 4 天 第 5 天 第 6 天 第 7 天 0. 前言 今天是开心的一天.因为我们终于来到了系列学习的最后一节.我相信你喜欢之前的课程,并从中学到了许多. ...
- POJ 2541 Binary Witch(逆序KMP,好题)
逆序KMP,真的是强大! 参考链接,下面有题意解释:http://blog.sina.com.cn/s/blog_6ec5c2d00100tphp.htmlhttp://blog.csdn.net/s ...