使用System.Collections.ArrayList.Sort()对象数组自定义排序

其核心为比较器的实现,比较器为一个类,继承了IComparer接口并实现int IComparer.Compare(Object x, Object y)方法,该方法实现自定义排序的比较方式,可以通过使用不同的比较器对对象数组进行不一样的排序,可以自定义排序的基准字段和排序方式。

比较器的实现如下:

/// <summary>
/// ArrayList.Sort()比较器,将StateSectionModel按ContiueTime降序排序
/// </summary>
public class SSModelSort : IComparer
{
public int Compare(object x, object y)
{
StateSectionModel a = x as StateSectionModel;
StateSectionModel b = y as StateSectionModel;
if (x != null && y != null)
{
return Convert.ToInt32(b.ContinueTime - a.ContinueTime);
}
else
{
throw new ArgumentException();
}
}
}

实体类StateSectionModel(需要排序的)如下:

public class StateSectionModel
{
/// <summary>
/// 状态
/// </summary>
public int State { get; set; } /// <summary>
/// 开始时间
/// </summary>
public string StartTime { get; set; } /// <summary>
/// 结束时间
/// </summary>
public string EndTime { get; set; } /// <summary>
/// 状态持续时间
/// </summary>
public double ContinueTime { get; set; }
}

使用示例:

ArrayList ArrSSModel = new ArrayList(){
new StateSectionModel(,"","",5.5),
new StateSectionModel(,"","",3.5),
new StateSectionModel(,"","",4.5)};
ArrSSModel.Sort(new SSModelSort()); //按持续时间降序排序

对象数组自定义排序--System.Collections.ArrayList.Sort()的更多相关文章

  1. 利用Comparable接口实现对对象数组的排序

    Arrays 类中的sort方法承诺可以对对象数组进行排序,但是需要对象所属的类实现Comparable接口 任何实现Comparable接口的对象都需要实现该方法 并且在Java SE 5.0之前该 ...

  2. js中对象的自定义排序

    //并返回一个可以用来对包含该成员的对象数组进行排序的比较函数 var compareAsc = function (prop) { return function (obj1, obj2) { va ...

  3. 数组升序排序的方法Arrays.sort();的应用

    package com.Summer_0421.cn; import java.util.Arrays; /** * @author Summer * 数组升序排序的方法Arrays.sort();应 ...

  4. PHP 根据对象属性进行对象数组的排序(usort($your_data, "cmp");)(inside the class: usort($your_data, array($this, "cmp")))

    PHP 根据对象属性进行对象数组的排序(usort($your_data, "cmp");)(inside the class: usort($your_data, array($ ...

  5. 无法将类型为“System.Windows.Controls.SelectedItemCollection”的对象强制转换为类型“System.Collections.Generic.IList`1

    在WPF中DataGrid 选择事件中获取SelectedItems 报错如下 无法将类型为“System.Windows.Controls.SelectedItemCollection”的对象强制转 ...

  6. php中数组自定义排序

    php中数组自定义排序方法有很多,现在只提usort();不会保留原有键名. unsort调用方法就是unsrot($arr,func); 注意: 如果func是写在当前类中的话,那么调用的方式是 u ...

  7. java中的排序(自定义数据排序)--使用Collections的sort方法

    排序:将一组数据按相应的规则 排列 顺序 1.规则:       基本数据类型:日常的大小排序. 引用类型: 内置引用类型(String,Integer..),内部已经指定规则,直接使用即可.---- ...

  8. C# System.Collections.ArrayList

    using System; using System.Collections; public class SamplesArrayList { public static void Main() { ...

  9. C#基础:通过委托给任何对象数组进行排序

    在日常编写程序的时候,我们需要对一些对象进行排序,比如对int数组进行排序,自定义类数组进行排序,首先我们先讨论对数组进行排序,我们应该对冒泡排序比较熟悉,下面是数组用冒泡排序的方法 for (int ...

随机推荐

  1. Oracle:Redhat 7.4+Oracle Rac 11.2.0.4 执行root.sh报错处理

    一.报错信息 二.原因分析 因为RHEL 7使用systemd而不是initd运行进程和重启进程,而root.sh通过传统的initd运行ohasd进程 三.解决办法 在RHEL 7中ohasd需要被 ...

  2. linux shell通过curl获取HTTP请求的状态码

    直接上代码: curl -I -m -o /dev/null -s -w %{http_code} www.baidu.com 参数说明: -I 仅测试HTTP头 -m 10 最多查询10s -o / ...

  3. 安卓开发笔记(三十三):Android仿写微信发现

    首先我们来看看仿写之后的效果: 看到是这个界面我们首先应该思考这些按钮是怎么做出来的?有了一个整体的思路之后才知道该怎么办.最开始我想的就直接利用button控件上面直接加上png的图片就可以形成一个 ...

  4. nuget 包管理器

    nuget 是.Net平台上的包管理器, 对于包的发布(打包 package)和消费(下载依赖管理)都有很好的支持, 本文仅仅关注消费端, =======================nuget项目 ...

  5. [20190523]修改参数后一些细节注意2.txt

    [20190523]修改参数后一些细节注意2.txt --//上午想模拟链接遇到的情况,链接http://blog.itpub.net/267265/viewspace-2645262/--//就是修 ...

  6. mssql sqlserver 使用sql脚本实现相邻两条数据相减的方法分享

    摘要: 下文讲述使用sql脚本实现相邻两条数据相减的方法,如下所示: 实验环境:sql server 2008 R2 实现思路: 1.使用cte表达式,对当前表进行重新编号 2.使用左连接对 表达式 ...

  7. 学习:SpringCloud(一)

    微服务: 微服务是一种架构模式或者一种架构风格,提倡将单一应用程序划分成一组小的服务==独立部署==,服务之间相互配合.相互协调,每个服务运行于自己的==进程==中. 服务与服务间采用轻量级通讯,如H ...

  8. Tomcat相关目录及配置文件

    目录结构 [root@localhost tomcat]# tree -L 1.├── bin├── BUILDING.txt├── conf├── CONTRIBUTING.md├── lib├── ...

  9. apache配置文件详解(中英文对照版)

    # This is the main Apache server configuration file. It contains the # configuration directives that ...

  10. MySQL学习笔记7——约束

    约束 约束 *约束是添加在列上的,用来约束列的! 1.主键约束(唯一标识) ***非空*** ***唯一*** ***被引用*** *当表的某一列被指定为主键后,该列就不能为空,不能有重复值出现. * ...