标签:
1.通过实现Comparable接口,根据User的年龄进行排序。
1 import java.util.Arrays; 2 public class ComparableUser implements Comparable { 3 4 private String id; 5 private int age; 6 7 public ComparableUser(String id, int age) { 8 this.id = id; 9 this.age = age; 10 } 11 12 public int getAge() { 13 return age; 14 } 15 16 public void setAge(int age) { 17 this.age = age; 18 } 19 20 public String getId() { 21 return id; 22 } 23 24 public void setId(String id) { 25 this.id = id; 26 } 27 28 public int compareTo(Object o) { 29 return this.age - ((ComparableUser) o).getAge(); 30 } 31 32 /** 33 * 测试方法 34 */ 35 public static void main(String[] args) { 36 ComparableUser[] users = new ComparableUser[] { 37 new ComparableUser("u1001", 25), 38 new ComparableUser("u1002", 20), 39 new ComparableUser("u1003", 21) }; 40 Arrays.sort(users); 41 for (int i = 0; i < users.length; i++) { 42 ComparableUser user = users[i]; 43 System.out.println(user.getId() + " " + user.getAge()); 44 } 45 } 46 47 }
2. 通过实现Comparator接口,根据User的年龄进行排序。
1 public class User { 2 3 private String id; 4 private int age; 5 6 public User(String id, int age) { 7 this.id = id; 8 this.age = age; 9 } 10 11 public int getAge() { 12 return age; 13 } 14 15 public void setAge(int age) { 16 this.age = age; 17 } 18 19 public String getId() { 20 return id; 21 } 22 23 public void setId(String id) { 24 this.id = id; 25 } 26 27 28 }
1 import java.util.Arrays; 2 import java.util.Comparator; 3 public class UserComparator implements Comparator { 4 5 public int compare(Object arg0, Object arg1) { 6 return ((User) arg0).getAge() - ((User) arg1).getAge(); 7 } 8 9 /** 10 * 测试方法 11 */ 12 public static void main(String[] args) { 13 User[] users = new User[] { new User("u1001", 25), 14 new User("u1002", 20), new User("u1003", 21) }; 15 Arrays.sort(users, new UserComparator()); 16 for (int i = 0; i < users.length; i++) { 17 User user = users[i]; 18 System.out.println(user.getId() + " " + user.getAge()); 19 } 20 } 21 }
选择Comparable接口还是Comparator?
一个类实现了Comparable接口则表明这个类的对象之间是可以相互比较的,这个类对象组成的集合就可以直接使用sort方法排序。
Comparator可以看成一种算法的实现,将算法和数据分离,Comparator也可以在下面两种环境下使用:
1、类的设计师没有考虑到比较问题而没有实现Comparable,可以通过Comparator来实现排序而不必改变对象本身
2、可以使用多种排序标准,比如升序、降序等。
Java中Comparable和Comparator实现对象比较
标签:
原文地址:http://www.cnblogs.com/yunger/p/5758302.html