需求:一組用戶對象User放在List中,這組用戶對象需要排序,先按照用戶的年齡來排序,如果年齡一樣的話按照id排序。
用戶實體類
package test;
/** * 用戶實體類 * @author chenqunaho * create date:2010-11-2 下午11:02:47 */ public class User {
private int id; //用戶id private int age; //用戶年齡 private String name; //用戶名 public User(){} public User(int id,int age,String name){ this.id=id; this.age=age; this.name=name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String toString(){ return "ID:"+id+",年齡:"+age+",名字:"+name; } }
比較器類
package test;
import java.util.Comparator;
/** * 用戶實體類的比較器 * @author chenqunaho * create date:2010-11-2 下午11:11:02 */ public class UserComparator implements Comparator<User> {
/** * 比較器方法 * 先按年齡排序從小到大,如果年齡一樣的話按id排序 */ @Override public int compare(User o1, User o2) { if(o1.getAge()>o2.getAge()) return 1; else if(o1.getAge()==o2.getAge()){ if(o1.getId()>o2.getId()) return 1; else if(o1.getId()==o2.getAge()) return 0; else return -1; } else return -1; }
}
測試類
package test;
import java.util.ArrayList; import java.util.Collections; import java.util.List;
/** * 用戶實體類排序的測試類 * @author chenqunaho * create date:2010-11-2 下午11:14:11 */ public class UserSortTest {
public static void main(String[] args) { //創建測試數據 List<User> users=new ArrayList<User>(); User u1=new User(1000,20,"張三"); User u2=new User(1001,18,"lisi"); User u3=new User(1002,20,"wangwu"); User u4=new User(1003,23,"趙六"); User u5=new User(999,20,"mouqi"); users.add(u1); users.add(u2); users.add(u3); users.add(u4); users.add(u5); //創建比較器對象 UserComparator comp=new UserComparator(); //調用排序方法 Collections.sort(users,comp); //遍歷集合打印測試數據 for (User user : users) { System.out.println(user); } } }
測試結果:
ID:1001,年齡:18,名字:lisi ID:999,年齡:20,名字:mouqi ID:1000,年齡:20,名字:張三 ID:1002,年齡:20,名字:wangwu ID:1003,年齡:23,名字:趙六