先说需求:找出一个对象List中,某个属性值最大的对象。

1.定义对象

   private class A
{
public int ID { get; set; } public string Name { get; set; }
}
 2.为两种方法定义两个时间段全局变量。
1         private static TimeSpan compare = new TimeSpan();
private static TimeSpan order = new TimeSpan();
 3.第一种方法:对列表按照某一列倒序排列取出第一个对象。
         private static void MaxByOrder(List<A> list)
{
 Stopwatch sw = new Stopwatch();
      sw.Start();
      A max = list.OrderByDescending(i => i.ID).First();
      sw.Stop();
      order += sw.Elapsed;
      Console.WriteLine(max.Name + "  Order:" + sw.Elapsed.ToString());
}
4.第二种方法:先找出列表中某个属性的最大值,然后在列表中取出第一个与最大值相等的对象。
    private static void Max(List<A> list)
    {
      Stopwatch sw = new Stopwatch();
      sw.Start(); int maxID = list.Max(m => m.ID);
      A max = list.First(i => i.ID == maxID);
      sw.Stop();
      compare += sw.Elapsed;
      Console.WriteLine(max.Name + "  Compare:" + sw.Elapsed.ToString());
    }
5.Main方法:生成测试列表,并循环调用两个方法100次,打印每种方法所用时间。
         private static void Main(string[] args)
{
List<A> list = new List<A>();
list = Enumerable.Range(, ).Select(n => new A { ID = n, Name = n.ToString() }).ToList();
Console.WriteLine("print");
int i = ;
while (i < )
{
MaxByOrder(list);
Max(list);
i++;
}
Console.WriteLine("Compare:" + compare);
Console.WriteLine("Order:" + order);
Console.ReadLine();
}

6.查看运行结果:

首先两种方式都找到了最大值,用第一种方式基本上花费时间为第二种的四到五倍。

ok,今天就先到这,希望大家拍砖……

在List中找出最大值的两种方法的更多相关文章

  1. .net中创建xml文件的两种方法

    .net中创建xml文件的两种方法 方法1:根据xml结构一步一步构建xml文档,保存文件(动态方式) 方法2:直接加载xml结构,保存文件(固定方式) 方法1:动态创建xml文档 根据传递的值,构建 ...

  2. 在Delphi中使用C++对象(两种方法,但都要改造C++提供的DLL)

    Delphi是市场上最好的RAD工具,但是现在C++占据着主导地位,有时针对一个问题很难找到Delphi或Pascal的解决方案.可是却可能找到了一个相关的C++类.本文描述几种在Delphi代码中使 ...

  3. Python 中格式化字符串 % 和 format 两种方法之间的区别

    Python2.6引入了 format 格式化字符串的方法,现在格式化字符串有两种方法,就是 % 和 format ,具体这两种方法有什么区别呢?请看以下解析. # 定义一个坐标值 c = (250, ...

  4. 在shell script中进行数值运算的两种方法

    方法1:使用"$((计算式))"的方式进行数值运算,不需要使用declare命令显示声明数值型变量来存储计算结果: 方法2:使用declare命令配合"-i"选 ...

  5. Android中Intent传递对象的两种方法(Serializable,Parcelable)

    今天要给大家讲一下Android中 Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是 Bundle.putP ...

  6. [转]Android中Intent传递对象的两种方法(Serializable,Parcelable)

    http://blog.csdn.net/xyz_lmn/article/details/5908355 今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种 ...

  7. Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!

    [转][原文] 大家好,好久不见,今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object); ...

  8. Oracle中spool命令实现的两种方法比较

    ---恢复内容开始--- 要输出符合要求格式的数据文件只需在select时用字符连接来规范格式.比如有如下表 SQL>; select id,username,password from myu ...

  9. ZBrush中设置背面遮罩的两种方法

    背面遮罩是ZBrush软件实时遮罩的一种,它的出现能够解决我们在模型雕刻时的一些问题.我们在 ZBrush®中雕刻一个比较薄的物体时,经常会不经意的雕刻到背面的物体.那么遇到此类状况该如何设置ZBru ...

随机推荐

  1. INTERRUPT CONTROLLER

    1,中断的基本概念 CPU与外设之间传输数据的控制方式通常有3种:查询方式,中断方式和DMA方式.查询方式的优点是硬件开销小不需要额外的硬件支持只是通过软件不断的轮询,使用起来也就比较简单,但在此方式 ...

  2. LightOJ 1341 Aladdin and the Flying Carpet 数学

    题意:给个矩形的面积a,和矩形的最小边长b,问有多少种矩形的方案(不能是正方形) 分析:a可以写成x,y,因为不能是正方形,所以设x<y,那么x<sqrt(a),y>sqrt(a) ...

  3. Visual Studio 2012 Professional 密钥

    Visual Studio 2012 Professional 密钥 4D974-9QX42-9Y43G-YJ7JG-JDYBP

  4. Selenium RC 环境搭建(eclipse)

    环境搭建参考:http://seleniumcn.cn/read.php?tid=7962  非常详细!晕乎晕乎了两天,看到这边帖子,终于搭起来了. 关于Selenium RC的原理,还是Seleni ...

  5. LoadRunner 参数化详解

    可能稍微对LR 有些了解的人都知道LR 参数化的功能,今天请跟我来一起好好理一下. 首先,咱们先说一下为啥要用参数化?假如您录制了一个登录的脚本,如下所示, web_submit_form(" ...

  6. as3+java+mysql(mybatis) 数据自动工具(一)

    在页游中,大部分的开发模式都是:客户端(as3)+ 服务端(java)+ 数据库(mysql). 在这3个部分会有一个相同的部分就是数据结构.比如一个用户数据,在客户端使用类 UserVO(as3) ...

  7. js图片实现延迟加载

    <script type="text/javascript"> function delayload(option){ //读取参数 //图片未加载时显示的图片 var ...

  8. C# WinForm修改Panel边框颜色

    private void panel1_Paint(object sender, PaintEventArgs e) { ControlPaint.DrawBorder(e.Graphics, thi ...

  9. SNMP: Simple? Network Management Protocol(转)

    转自:http://www.rane.com/note161.html An SNMP Overview The Message Format The Actual Bytes Introductio ...

  10. ios 开发选取头像,图片库,相机,裁取图片

    需要遵守的代理协议:UIActionSheetDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate @prop ...