仓酷云
标题:
来一篇关于NET的C#中完成List泛型自界说排序示例
[打印本页]
作者:
飘灵儿
时间:
2015-1-16 14:22
标题:
来一篇关于NET的C#中完成List泛型自界说排序示例
我有个同学,他是搞Java的,他给我说“Java不是效率低,而是速度慢。”,我不是搞Java的,我实在想不透这句话的含义,难道执行速度不就是效率低吗?难道执行速度慢还成效率高了?从asp.net2.0后,List泛型就成了我们经常使用的一个类了。它基础上代替了之前的ArrayList类。
本章我们不会商List与ArrayList的差别,仅会商怎样在List泛型中完成自界说排序。
我们先新建一个Person类,用来作为List中的工具,这里仅为Person增加名字和岁数两个属性,可以演示出我们排序的功效便可:
publicclassPerson
{
///<summary>
///名字
///</summary>
publicstringName
{
get;
set;
}
///<summary>
///岁数
///</summary>
publicintAge
{
get;
set;
}
publicPerson(stringname,intage)
{
this.Name=name;
this.Age=age;
}
}
然后我们新建一个ComparerPersonForList类,用来界说依据Person的Age从小到年夜排序的划定规矩,由于它要完成排序,以是必需要承继IComparer类。
publicclassComparerPersonForList:IComparer<Person>
{
publicintCompare(Personx,Persony)
{
if(x.Age>y.Age)
{
return1;
}
elseif(x.Age==y.Age)
{
return0;
}
else
{
return-1;
}
}
}
懂得一下
IComparer接口
:
IComparer次要用来对照两个工具的巨细。假如前往值小于0,则暗示前一个工具小于后一个工具,前往值即是0,则暗示两个工具相称,前往值年夜于0,则暗示前一个工具年夜于后一个工具。
IComparer的界说以下:
publicinterfaceIComparer<T>
{
intCompare(Tx,Ty);
}
好了,有了ComparerPersonForList类,我们就能够依据List的Sort办法来排序了,全体示例代码以下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Collections;
namespaceWebApplication1
{
publicclassPerson
{
///<summary>
///名字
///</summary>
publicstringName
{
get;
set;
}
///<summary>
///岁数
///</summary>
publicintAge
{
get;
set;
}
publicPerson(stringname,intage)
{
this.Name=name;
this.Age=age;
}
}
publicclassComparerPersonForList:IComparer<Person>
{
publicintCompare(Personx,Persony)
{
if(x.Age>y.Age)
{
return1;
}
elseif(x.Age==y.Age)
{
return0;
}
else
{
return-1;
}
}
}
publicpartialclassWebForm1:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
List<Person>list=newList<Person>();
list.Add(newPerson("小明",20));
list.Add(newPerson("小亮",18));
list.Add(newPerson("小张",25));
Response.Write("未排序前的数据!<br/>");
foreach(Personpinlist)
{
Response.Write("姓名:"+p.Name+"--岁数:"+p.Age+"<br/>");
}
Response.Write("<br/><br/>排序后的数据!<br/>");
list.Sort(newComparerPersonForList());
foreach(Personpinlist)
{
Response.Write("姓名:"+p.Name+"--岁数:"+p.Age+"<br/>");
}
}
}
}
输入了局:
未排序前的数据!
姓名:小明--岁数:20
姓名:小亮--岁数:18
姓名:小张--岁数:25
排序后的数据!
姓名:小亮--岁数:18
姓名:小明--岁数:20
姓名:小张--岁数:25
从了局上看,已完成我们要想的排序了。List.Sort有四个重载办法,每一个重载的办法必要完成的排序划定规矩纷歧样,人人能够依据本人的完成情形来利用分歧的重载。刚刚打开这篇专题,猛然见到HAL9000发表的《对于大型公司项目平台选择j2ee的几层认识》系列,深受启发。
作者:
admin
时间:
2015-1-18 13:41
CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。
作者:
第二个灵魂
时间:
2015-1-26 22:03
通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。
作者:
兰色精灵
时间:
2015-2-4 22:34
ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。
作者:
谁可相欹
时间:
2015-2-10 22:35
Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
作者:
分手快乐
时间:
2015-3-1 17:16
微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。
作者:
金色的骷髅
时间:
2015-3-10 21:45
Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!
作者:
精灵巫婆
时间:
2015-3-17 11:29
大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
作者:
若天明
时间:
2015-3-24 10:01
但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2