package com.jadyer.test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; /** * 通过实现Comparator接口,重写其compare()方法的方式自定义排序ArrayList * @create Oct 16, 2013 5:43:29 PM * @author 玄玉 */ public class SortTest { public static void main(String[] args) { List<User> userList = new ArrayList<User>(); userList.add(new User(33, "11", "智能客服")); userList.add(new User(26, "7", "基础功能")); userList.add(new User(1, "2", "首页")); userList.add(new User(6, "7", "特色功能")); userList.add(new User(17, "10", "运营管理")); userList.add(new User(41, "12", "帐号管理")); userList.add(new User(20, "3", "推广模块")); userList.add(new User(38, "9", "素材管理")); for(int i=0; i<userList.size(); i++){ System.out.println(userList.get(i)); } System.out.println("-----------------------------------------------------------------------"); System.out.println("以上是自定义排序前的顺序,默认是按照ArrayList存放顺序显示的"); System.out.println("以下是自定义排序后的顺序,即先Age排序,Age相同时再按Name排序"); System.out.println("-----------------------------------------------------------------------"); Collections.sort(userList, new Comparator<User>(){ @Override public int compare(User o1, User o2) { if(!o1.getAge().equals(o2.getAge())){ return Integer.parseInt(o1.getAge()) - Integer.parseInt(o2.getAge()); }else{ return o1.getName().compareTo(o2.getName()); } } }); for(int i=0; i<userList.size(); i++){ System.out.println(userList.get(i)); } } } class User { private int id; //用户编号 private String age; //用户年龄(这里故意让它为String) private String name; //用户名 public User(int _id, String _age, String _name){ this.id = _id; this.age = _age; this.name = _name; } public String getAge() { return age; } public String getName() { return name; } @Override public String toString() { return this.id + "--" + this.age + "--" + this.name; } }