java线性表排序示例分享
大家可以先看一下这个静态方法public static <t> void sort(list<t> list, comparator<? super t> c)
1.先定义一个模型:
package model;
/**
* user.java
*
* @author 梁wp 2014年3月3日
*/
public class user
{
private string username;
private int userage;
public user()
{
}
public user(string username, int userage)
{
this.username = username;
this.userage = userage;
}
public string getusername()
{
return username;
}
public void setusername(string username)
{
this.username = username;
}
public int getuserage()
{
return userage;
}
public void setuserage(int userage)
{
this.userage = userage;
}
}
2.然后定义一个比较器,实现java.util.comparator接口,在compare()方法编写比较规则:
package util;
import java.util.comparator;
import model.user;
/**
* comparatoruser.java
*
* @author 梁wp 2014年3月3日
*/
public class comparatoruser implements comparator<user>
{
@override
public int compare(user arg0, user arg1)
{
// 先比较名字
int flag = arg0.getusername().compareto(arg1.getusername());
// 如果名字一样,就比较年龄
if (flag == 0)
{
return arg0.getuserage() - arg1.getuserage();
}
return flag;
}
}
3.排序的时候用java.util.collections里面的sort(list list, comparator c)方法:
package test;
import java.util.arraylist;
import java.util.collections;
import java.util.list;
import util.comparatoruser;
import model.user;
/**
* testapp.java
*
* @author 梁炜平 2014年3月3日
*/
public class testapp
{
public static void main(string[] arg0)
{
list<user> userlist = new arraylist<user>();
// 插入数据
userlist.add(new user("a", 15));
userlist.add(new user("b", 14));
userlist.add(new user("a", 14));
// 排序
collections.sort(userlist, new comparatoruser());
// 打印结果
for (user u : userlist)
{
system.out.println(u.getusername() + " " + u.getuserage());
}
}
}
4.运行结果:
a 14
a 15
b 14