Java线性表的排序
前言:刚才在弄JDBC的时候,忽然觉得order-by用太多了没新鲜感,我的第六感告诉我java有对线性表排序的封装,然后在eclipse里随便按了一下“.”
,哈哈,竟然真有这么一个静态方法public static void sort(List list,
Comparator super T> c)。
1.先定义一个模型:
packagemodel;/*** User.java
*
*@author梁WP 2014年3月3日*/
public classUser
{privateString userName;private intuserAge;publicUser()
{
}public User(String userName, intuserAge)
{this.userName =userName;this.userAge =userAge;
}publicString getUserName()
{returnuserName;
}public voidsetUserName(String userName)
{this.userName =userName;
}public intgetUserAge()
{returnuserAge;
}public void setUserAge(intuserAge)
{this.userAge =userAge;
}
}
2.然后定义一个比较器,实现java.util.Comparator接口,在compare()方法编写比较规则:
packageutil;importjava.util.Comparator;importmodel.User;/*** ComparatorUser.java
*
*@author梁WP 2014年3月3日*/
public class ComparatorUser implements Comparator{
@Overridepublic intcompare(User arg0, User arg1)
{//先比较名字
int flag =arg0.getUserName().compareTo(arg1.getUserName());//如果名字一样,就比较年龄
if (flag == 0)
{return arg0.getUserAge() -arg1.getUserAge();
}returnflag;
}
}
3.排序的时候用java.util.Collections里面的sort(List list, Comparator c)方法:
packagetest;importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;importutil.ComparatorUser;importmodel.User;/*** TestApp.java
*
*@author梁炜平 2014年3月3日*/
public classTestApp
{public static voidmain(String[] arg0)
{
List userList = new ArrayList();//插入数据
userList.add(new User("A", 15));
userList.add(new User("B", 14));
userList.add(new User("A", 14));//排序
Collections.sort(userList, newComparatorUser());//打印结果
for(User u : userList)
{
System.out.println(u.getUserName()+ " " +u.getUserAge());
}
}
}
4.运行结果:
A 14A15B14
原文:http://www.cnblogs.com/liangweiping/p/3577788.html