C# 中 List.Sort运用(IComparer<T>)排序用法
作者:网络转载 发布时间:[ 2013/10/8 14:59:47 ] 推荐标签:
在项目中由于要解析一个箱单号,要求从小到大的顺序。由于循环从数据库取出来取得值不是按照从小到大排序的因此需要自己转换下。
本篇文章用到了 ListTSort 方法 (IComparerT)方法重载
List<T>.Sort 方法 (IComparer<T>)的方法解释地址如下:
http://msdn.microsoft.com/zh-cn/library/234b841s%28v=vs.110%29.aspx
使用指定的比较器对整个 List<T> 中的元素进行排序。
命名空间: System.Collections.Generic
程序集: mscorlib(在 mscorlib.dll 中)
语法
C#
public void Sort(
IComparer<T> comparer
)
参数
comparer
类型:System.Collections.Generic.IComparer<T>
比较元素时要使用的 IComparer<T> 实现,或者为null,表示使用默认比较器Comparer<T>.Default。
异常
异常条件
InvalidOperationException
comparer 为 null,且默认比较器Comparer<T>.Default 找不到T 类型的 IComparable<T> 泛型接口或IComparable 接口的实现。
ArgumentException
comparer 的实现导致排序时出现错误。例如,将某个项与其自身进行比较时,comparer 可能不返回 0。
备注
如果提供了 comparer,则List<T> 的元素是使用指定的IComparer<T> 实现进行排序的。
如果 comparer 为 null,则默认比较器Comparer<T>.Default 将检查类型T 是否实现了 IComparable<T> 泛型接口,如果实现了该接口,则使用该实现。否则,Comparer<T>.Default 将检查类型T 是否实现了 IComparable 接口。如果类型 T 未实现任一接口,则 Comparer<T>.Default 将引发InvalidOperationException。
此方法使用 Array.Sort,后者使用 QuickSort 算法。此实现执行不稳定排序;亦即,如果两元素相等,则其顺序可能不被保留。 相反,稳定排序则会保持相等元素的顺序。
一般情况下,此方法的运算复杂度为 O(n logn),其中 n 为 Count,坏的情况下其运算复杂度为 O(n ^ 2)。
使用示例:
view plaincopy
public class LotAtt10Comparer : IComparer<string>
{
public int Compare(string x, string y)
{
if (x == null)
{
if (y == null)
{
// If x is null and y is null, they're
// equal.
return 0;
}
else
{
// If x is null and y is not null, y
// is greater.
return -1;
}
}
else
{
// If x is not null...
//
if (y == null)
// ...and y is null, x is greater.
{
return 1;
}
else
{
// ...and y is not null, compare the
// lengths of the two strings.
//
int retval = x.Length.CompareTo(y.Length);
if (retval != 0)
{
// If the strings are not of equal length,
// the longer string is greater.
//
return retval;
}
else
{
// If the strings are of equal length,
// sort them with ordinary string comparison.
//
return x.CompareTo(y);
}
}
}
}
}
|
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11