用户实体类:
package sort; /** * 用户实体类 */ public class User { private int id; private String name; private int age ; private int collect; public User(int id, String name, int age, int collect) { super(); this.id = id; this.name = name; this.age = age; this.collect = collect; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getCollect() { return collect; } public void setCollect(int collect) { this.collect = collect; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", age=" + age + ", collect=" + collect + "]"; } }
自定义比较器:
package sort; import java.util.Comparator; /** * 用户对象比较器, 自定义比较器, 需实现比较器接口 */ public class UserComparator implements Comparator<User> { /** * 比较方法 */ @Override public int compare(User o1, User o2) { if(o1.getAge() > o2.getAge()) { return 1; } else if (o1.getAge() < o2.getAge()){ return -1; } else { if (o1.getCollect() >= o2.getCollect()) { return 1; } else { return -1; } } } }
测试类:
package sort; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class Client { public static void main(String[] args) { User u1 =new User(1, "A", 20, 1800); User u2 =new User(2, "B", 21, 1750); User u3 =new User(3, "C", 22, 1900); User u4 =new User(4, "D", 21, 1700); User u5 =new User(5, "E", 20, 1850); ArrayList<User> list = new ArrayList<User>(); list.add(u1); list.add(u2); list.add(u3); list.add(u4); list.add(u5); System.out.println ("排序前*******************************"); for (User user: list){ System.out.println (user); } System.out.println ("排序后*******************************"); //把排序规则交给sort方法, 该方法会按照你自定义的规则进行排序 Collections.sort(list, new UserComparator());//reverse反序排列 for (User user : list){ System.out.println (user); } System.out.println ("排序后*******************************"); //匿名类方式进行排序 Collections.sort(list, new Comparator<User>(){ @Override public int compare(User o1, User o2) { if(o1.getAge() > o2.getAge()) { return 1; } else if (o1.getAge() < o2.getAge()){ return -1; } else { if (o1.getCollect() >= o2.getCollect()) { return 1; } else { return -1; } } }}); for (User user : list){ System.out.println (user); } } }
打印结果:
排序前******************************* User [id=1, name=A, age=20, collect=1800] User [id=2, name=B, age=21, collect=1750] User [id=3, name=C, age=22, collect=1900] User [id=4, name=D, age=21, collect=1700] User [id=5, name=E, age=20, collect=1850] 排序后******************************* User [id=1, name=A, age=20, collect=1800] User [id=5, name=E, age=20, collect=1850] User [id=4, name=D, age=21, collect=1700] User [id=2, name=B, age=21, collect=1750] User [id=3, name=C, age=22, collect=1900] 排序后******************************* User [id=1, name=A, age=20, collect=1800] User [id=5, name=E, age=20, collect=1850] User [id=4, name=D, age=21, collect=1700] User [id=2, name=B, age=21, collect=1750] User [id=3, name=C, age=22, collect=1900]
谢谢声明出处!
转自: http://www.cnblogs.com/gscq073240/articles/7128209.html

浙公网安备 33010602011771号