第一種是list中的對(duì)象實(shí)現(xiàn)Comparable接口,如下:
02 |
* 根據(jù)order對(duì)User排序 |
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()); |
測(cè)試一下:
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()); |
輸出結(jié)果如下 a b 第二種方法是根據(jù)Collections.sort重載方法來(lái)實(shí)現(xiàn),例如:
02 |
* 根據(jù)order對(duì)User排序 |
04 |
public class User { //此處無(wú)需實(shí)現(xiàn)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) { |
主類中這樣寫(xiě)即可:
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()); |
輸出結(jié)果如下 a b 前者代碼結(jié)構(gòu)簡(jiǎn)單,但是只能根據(jù)固定的屬性排序,后者靈活,可以臨時(shí)指定排序項(xiàng),但是代碼不夠簡(jiǎn)潔
多字段的場(chǎng)合:
01 |
Collections.sort(list, new Comparator |
12 |
public int compare(User arg0, User arg1) { |
14 |
int i = arg0.getOrder().compareTo(arg1.getOrder()); |
16 |
// 如果專業(yè)相同則進(jìn)行第二次比較 |
19 |
int j=arg0.getXXX().compareTo(arg1.getXXX()); |
20 |
// 如果學(xué)制相同則返回按年齡排序 |
22 |
return arg0.getCCC().compareTo(arg1.getCCC()); |
|