java List对象排序

java List 排序 Collections.sort() 对 List 排序

 1 //一个POJO例子
 2 
 3 class User {
 4  String name;
 5  String age;
 6  
 7  public User(String name,String age){
 8   this.name=name;
 9   this.age=age;
10  }
11  public String getAge() {
12   return age;
13  }
14  public void setAge(String age) {
15   this.age = age;
16  }
17  public String getName() {
18   return name;
19  }
20  public void setName(String name) {
21   this.name = name;
22  } 
23 }
24 
25 
26 //具体的比较类,实现Comparator接口
27 
28 import java.util.Comparator;
29 import java.util.List;
30 import java.util.ArrayList;
31 import java.util.Collections;
32 
33 public class ComparatorUser implements Comparator{
34 
35  public int compare(Object arg0, Object arg1) {
36   User user0=(User)arg0;
37   User user1=(User)arg1;
38 
39    //首先比较年龄,如果年龄相同,则比较名字
40 
41   int flag=user0.getAge().compareTo(user1.getAge());
42   if(flag==0){
43    return user0.getName().compareTo(user1.getName());
44   }else{
45    return flag;
46   }  
47  }
48  
49 }
50 
51 
52 
53 
54 //测试类
55 public class SortTest {
56 
57  
58  public static void main(String[] args){
59   List userlist=new ArrayList();
60   userlist.add(new User("dd","4"));
61   userlist.add(new User("aa","1"));
62   userlist.add(new User("ee","5"));
63   userlist.add(new User("bb","2"));  
64   userlist.add(new User("ff","5"));
65   userlist.add(new User("cc","3"));
66   userlist.add(new User("gg","6"));
67   
68   ComparatorUser comparator=new ComparatorUser();
69   Collections.sort(userlist, comparator);
70    
71   for (int i=0;i<userlist.size();i++){
72    User user_temp=(User)userlist.get(i);
73       System.out.println(user_temp.getAge()+","+user_temp.getName()); 
74   }
75   
76  }
77 }
78 
79  //首先年龄排序,如果年龄相同,则按名字排序
80 
81 结果:
82    1, aa
83    2, bb
84    3, cc
85    4, dd
86    5, ee                    //注意:同样是5岁的人,则比较名字(ee,ff),然后排序
87    5, ff
88    6, gg

再举一个例子:

1.现有对象

 1 List<Map<String, Object>> loanPayList= new ArrayList<Map<String, Object>>(loanPayList.size());

2.实现Comparator接口

 1     class LoanPayComparator implements Comparator<Object>{
 2         @SuppressWarnings("unchecked")
 3         public int compare(Object obj1, Object obj2) {
 4             Date d1 = (Date) ((Map<String, ?>) obj1).get(OTS_LOAN_PAY_BY_DATE);
 5             Date d2 = (Date) ((Map<String, ?>) obj2).get(OTS_LOAN_PAY_BY_DATE);
 6             if (d1 == null || d2 == null) {
 7                 LOG.warn("[loanPayComparator:compare()] sorted date is null.");
 8                 return 0;
 9             } else {
10                 if ((d1.getTime()) < d2.getTime()) {
11                     return 1;
12                 } else if ((d1.getTime()) > d2.getTime()) {
13                     return -1;
14                 } else {
15                     return 0;
16                 }
17             }
18         }
19     }

 3.排序

1 Collections.sort(loanPayList, new LoanPayComparator());

 

 

posted @ 2014-01-08 10:56  籍用  阅读(291)  评论(0编辑  收藏  举报