仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 857|回复: 8
打印 上一主题 下一主题

[学习教程] 来一篇关于NET的C#中完成List泛型自界说排序示例

[复制链接]
飘灵儿 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:22:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我有个同学,他是搞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:46 | 只看该作者
CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-26 22:03:49 | 只看该作者
通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。
兰色精灵 该用户已被删除
地板
发表于 2015-2-4 22:34:24 | 只看该作者
ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。
谁可相欹 该用户已被删除
5#
发表于 2015-2-10 22:35:02 | 只看该作者
Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
分手快乐 该用户已被删除
6#
发表于 2015-3-1 17:16:41 | 只看该作者
微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。
金色的骷髅 该用户已被删除
7#
发表于 2015-3-10 21:45:38 | 只看该作者
Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!
精灵巫婆 该用户已被删除
8#
发表于 2015-3-17 11:29:15 | 只看该作者
大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
若天明 该用户已被删除
9#
发表于 2015-3-24 10:01:12 | 只看该作者
但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 23:12

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表