小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

用Java集合中的Collections.sort方法對(duì)list排序的兩種方法

 GreatStep 2014-02-13

第一種是list中的對(duì)象實(shí)現(xiàn)Comparable接口,如下:

01 /**
02 * 根據(jù)order對(duì)User排序
03 */
04 public class User implements Comparable
05        
06        
07        
08        
09      <USER>
10         
11         
12         
13         
14       {
15     private String name;
16     private Integer order;
17     public String getName() {
18         return name;
19     }
20     public void setName(String name) {
21         this.name = name;
22     }
23     public Integer getOrder() {
24         return order;
25     }
26     public void setOrder(Integer order) {
27         this.order = order;
28     }
29     public int compareTo(User arg0) {
30         return this.getOrder().compareTo(arg0.getOrder());
31     }
32 }
33        
34        
35        
36        
37      </USER>

測(cè)試一下:
01 public class Test{
02   
03     public static void main(String[] args) {
04         User user1 = new User();
05         user1.setName("a");
06         user1.setOrder(1);
07         User user2 = new User();
08         user2.setName("b");
09         user2.setOrder(2);
10         List
11        
12        
13        
14        
15      <USER>
16         
17         
18         
19         
20        list = new ArrayList
21         
22         
23         
24         
25       <USER>
26          
27          
28          
29          
30        ();
31         //此處add user2再add user1
32         list.add(user2);
33         list.add(user1);
34         Collections.sort(list);
35         for(User u : list){
36             System.out.println(u.getName());
37         }
38     }
39 }
40         
41         
42         
43         
44       </USER>
45        
46        
47        
48        
49      </USER>

輸出結(jié)果如下
a
b

第二種方法是根據(jù)Collections.sort重載方法來(lái)實(shí)現(xiàn),例如:
01 /**
02 * 根據(jù)order對(duì)User排序
03 */
04 public class User { //此處無(wú)需實(shí)現(xiàn)Comparable接口
05     private String name;
06     private Integer order;
07     public String getName() {
08         return name;
09     }
10     public void setName(String name) {
11         this.name = name;
12     }
13     public Integer getOrder() {
14         return order;
15     }
16     public void setOrder(Integer order) {
17         this.order = order;
18     }
19 }

主類(lèi)中這樣寫(xiě)即可:
01 public class Test{
02     public static void main(String[] args) {
03         User user1 = new User();
04         user1.setName("a");
05         user1.setOrder(1);
06         User user2 = new User();
07         user2.setName("b");
08         user2.setOrder(2);
09         List
10        
11        
12        
13        
14      <USER>
15         
16         
17         
18         
19        list = new ArrayList
20         
21         
22         
23         
24       <USER>
25          
26          
27          
28          
29        ();
30         list.add(user2);
31         list.add(user1);
32           
33         Collections.sort(list,new Comparator
34          
35          
36          
37          
38        <USER>
39           
40           
41           
42           
43         (){
44             public int compare(User arg0, User arg1) {
45                 return arg0.getOrder().compareTo(arg1.getOrder());
46             }
47         });
48         for(User u : list){
49             System.out.println(u.getName());
50         }
51     }
52 }
53          
54          
55          
56          
57        </USER>
58         
59         
60         
61         
62       </USER>
63        
64        
65        
66        
67      </USER>

輸出結(jié)果如下
a
b

前者代碼結(jié)構(gòu)簡(jiǎn)單,但是只能根據(jù)固定的屬性排序,后者靈活,可以臨時(shí)指定排序項(xiàng),但是代碼不夠簡(jiǎn)潔

多字段的場(chǎng)合:
01 Collections.sort(list,new Comparator
02         
03         
04         
05         
06       <USER>
07          
08          
09          
10          
11        (){
12             public int compare(User arg0, User arg1) {
13  //            第一次比較專(zhuān)業(yè)
14                 int i = arg0.getOrder().compareTo(arg1.getOrder());
15   
16 //            如果專(zhuān)業(yè)相同則進(jìn)行第二次比較
17             if(i==0){
18 //                第二次比較
19                 int j=arg0.getXXX().compareTo(arg1.getXXX());
20 //                如果學(xué)制相同則返回按年齡排序
21                 if(j==0){
22                     return arg0.getCCC().compareTo(arg1.getCCC());
23                 }
24                 return j;
25             }
26             return i;
27             }
28         });
29         
30         
31         
32         
33       </USER>

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多