知识大全 对象数组根据某属性列的灵活排序

Posted

篇首语:时间,就像海绵里的水,只要愿挤,总是有的。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 对象数组根据某属性列的灵活排序相关的知识,希望对你有一定的参考价值。

  在工作中经常会遇到对象数组根据某个属性进行排序的问题 这里介绍一个方法   以汽车为例 public class Car:    private int weight;

  public int Weight      get return weight;    set weight = value;       private string type;

  public string Type      get return type;    set type = value;         Car[] cars 现在需要排序 首先我们想根据Weight进行排序 大家自然会想到冒泡算法 不过这个肯定不是最好的 这里提供一个简便的方法

  我们将类Car实现接口IComparable使其能够使用Array Sort()   代码如下

  public class Car:IComparable<Car>      private int weight;

  public int Weight      get return weight;    set weight = value;       private string type;

  public string Type      get return type;    set type = value;   

  IComparable 成员#region IComparable<Employee> 成员

  public int CompareTo(Car other)      if (this weight == other weight)   return ;   if (this weight > other weight)   return ;   return ;  

  #endregion   实现该方法以后我们就可以直接使用如下代码来对cars进行排序了    Car[] arr = new Car[] car car car ;   Array Sort<Car>(arr);但是随着项目的发展的发展我们会迎来新的问题 我们现在又需要根据Type排序了 怎么办呢?  不用担心我们只要使用一个最简单的Adapter模式就能解决这个问题  下面我们来创建这个适配器    public class ComparaCarAdapter : IComparer<Car>  

  IComparer 成员#region IComparer<Car> 成员

  public int Compare(Car x Car y)      return x Type CompareTo(y Type);  

  #endregion   然后如此调用   Array Sort<Car>(arr new ComparaCarAdapter());但是这样如果属性很多 会产生很多的类 怎么办呢 那么利用反射吧 将ComparaCarAdapter改造为    public class ComparaCarAdapter : IComparer<Car>      string _progName = ;   public ComparaCarAdapter(string progName)      _progName = progName;      IComparer 成员#region IComparer<Employee> 成员

  public int Compare(Car x Car y)      Type t = typeof(Car);   PropertyInfo pi = t GetProperty(_progName);   object xvalue = pi GetValue(x null);   object yvalue = pi GetValue(y null);   if (xvalue is string)      return ((string)xvalue) CompareTo((string)yvalue);      else      if (xvalue is int)   return ((int)xvalue) CompareTo((int)yvalue);      throw new NotSupportedException();  

cha138/Article/program/ASP/201311/21665

相关参考

知识大全 Java中对象按照属性排序

Java中对象按照属性排序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  项目中经常需要用到比如

知识大全 javascript中自定义对象的属性方法分享

这篇文章介绍了在javascript中自定义对象的属性方法有需要的朋友可以参考一下   首先介绍下关联数组复制代码代码如下:<script>vartest=newObject()

知识大全 数据结构 10.16 链式基数排序

  类似于表插入排序附设指针数组将顺序表视作一个静态链表利用修改指针实现分配和收集同时设置rd个队列的头指针和尾指针分别指示各队列的头结点和尾结点在链表中的位置  首先初始化空队列即将每个队列的头指针

类比推理,是指根据不同对象有部分属性相同,从而推出它们的其他属性也相同的推理。根据上述定义,下列不属于类比推理的是:__

类比推理,是指根据不同对象有部分属性相同,从而推出它们的其他属性也相同的推理。根据上述定义,下列不属于类比推理的是:_____A、声和光有不少属性相同,如都可直线传播,都有反射、折射和干扰等现象,由此

知识大全 php关联数组排序(快速排序)

  使用环境和条件  有这样一种情况php里面的关联数组如果下面这样的数组数据  [php]  $array=array(  array(  name=>xiao  age=>  )  a

知识大全 在PB中如何控制Datewindow列的修改属性[2]

在PB中如何控制Datewindow列的修改属性[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 在PB中如何控制Datewindow列的修改属性[1]

在PB中如何控制Datewindow列的修改属性[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 利用SQL的扩展属性象access一样显示列的注释

利用SQL的扩展属性象access一样显示列的注释  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 PHP数组排序函数

PHP数组排序函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!cha138/Artic

知识大全 PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解

PHP冒泡排序二分查找顺序查找二维数组排序算法函数的详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下