|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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的几层认识》系列,深受启发。 |
|