第一种是list中的对象实现Comparable接口,如下:
04 |
public class User implements Comparable |
16 |
private Integer order; |
17 |
public String getName() { |
20 |
public void setName(String name) { |
23 |
public Integer getOrder() { |
26 |
public void setOrder(Integer order) { |
29 |
public int compareTo(User arg0) { |
30 |
return this .getOrder().compareTo(arg0.getOrder()); |
测试一下:
03 |
public static void main(String[] args) { |
04 |
User user1 = new User(); |
07 |
User user2 = new User(); |
31 |
//此处add user2再add user1 |
34 |
Collections.sort(list); |
36 |
System.out.println(u.getName()); |
输出结果如下 a b 第二种方法是根据Collections.sort重载方法来实现,例如:
04 |
public class User { //此处无需实现Comparable接口 |
06 |
private Integer order; |
07 |
public String getName() { |
10 |
public void setName(String name) { |
13 |
public Integer getOrder() { |
16 |
public void setOrder(Integer order) { |
主类中这样写即可:
02 |
public static void main(String[] args) { |
03 |
User user1 = new User(); |
06 |
User user2 = new User(); |
33 |
Collections.sort(list, new Comparator |
44 |
public int compare(User arg0, User arg1) { |
45 |
return arg0.getOrder().compareTo(arg1.getOrder()); |
49 |
System.out.println(u.getName()); |
输出结果如下 a b 前者代码结构简单,但是只能根据固定的属性排序,后者灵活,可以临时指定排序项,但是代码不够简洁
多字段的场合:
01 |
Collections.sort(list, new Comparator |
12 |
public int compare(User arg0, User arg1) { |
14 |
int i = arg0.getOrder().compareTo(arg1.getOrder()); |
19 |
int j=arg0.getXXX().compareTo(arg1.getXXX()); |
22 |
return arg0.getCCC().compareTo(arg1.getCCC()); |
|