使用java對List排序


1、以List中的一個字段【thousandrate】,從大到小進行排序:

排序List:mapList

調用函數:Collections.sort()

 1 Collections.sort(mapList, new Comparator<Map<String, Object>>() {
 2             @Override
 3             public int compare(Map<String, Object> o1, Map<String, Object> o2) {
 4 
 5                 Integer v1 = Integer.valueOf(o1.get("thousandrate").toString());
 6                 Integer v2 = Integer.valueOf(o2.get("thousandrate").toString());
 7                 if (v2 != null){
 8                     return v2.compareTo(v1);
 9                 }
10                 return 0;
11             }
12         });

 2、List排序函數:sort()

傳參,調用以下函數,結果就是以“thousandrate”從大到小排序

排序List:mapList

調用方法:直接調用 sort(mapList);

重寫sort()方法:

 1 public void sort(List<Map<String, Object>> list){
 2         Collections.sort(list, new Comparator<Map<String, Object>>() {
 3             @Override
 4             public int compare(Map<String, Object> m1, Map<String, Object> m2) {
 5                 Integer v1 = Integer.valueOf(m1.get("thousandrate").toString());
 6                 Integer v2 = Integer.valueOf(m2.get("thousandrate").toString());
 7                 if (v1 != null){
 8                     return v1.compareTo(v2);
 9                 }
10                 return 0;
11             }
12         });
13     }

 例子:

 1 package com.mooc.springboordemo1.springboordemo1;
 2 
 3 import java.net.SocketException;
 4 import java.net.UnknownHostException;
 5 import java.util.ArrayList;
 6 import java.util.Collections;
 7 import java.util.Comparator;
 8 import java.util.LinkedHashMap;
 9 import java.util.List;
10 import java.util.Map;
11 
12 
13 public class MapSort {
14     public static void main(String[] args) throws UnknownHostException, SocketException {
15 
16         List<Map<String, Object>> listResult = new ArrayList<Map<String, Object>>();
17         Map<String, Object> map1 = new LinkedHashMap<String, Object>();
18         map1.put("count", 2);
19         map1.put("name", "abc");
20         map1.put("key", "acv");
21         listResult.add(map1);
22         Map<String, Object> map2 = new LinkedHashMap<String, Object>();
23         map2.put("count", 3);
24         map2.put("name", "bbc");
25         map2.put("key", "bcv");
26         listResult.add(map2);
27         Map<String, Object> map3 = new LinkedHashMap<String, Object>();
28         map3.put("count", 1);
29         map3.put("name", "cbc");
30         map3.put("key", "ccv");
31         listResult.add(map3);
32         Map<String, Object> map4 = new LinkedHashMap<String, Object>();
33         map4.put("count", 4);
34         map4.put("name", "cbc");
35         map4.put("key", "ccv");
36         listResult.add(map4);
37 
38         System.out.println("排序前:");
39         for (Map<String, Object> map : listResult) {
40             System.out.println("count:"+map.get("count")+" name:"+map.get("name")+" key:"+map.get("key"));
41         }
42 
43         Collections.sort(listResult, new MapComparatorDesc());
44 
45         System.out.println("降序:");
46         for (Map<String, Object> map : listResult) {
47             System.out.println("count:"+map.get("count")+" name:"+map.get("name")+" key:"+map.get("key"));
48         }
49 
50         Collections.sort(listResult, new MapComparatorAsc());
51 
52         System.out.println("升序:");
53         for (Map<String, Object> map : listResult) {
54             System.out.println("count:"+map.get("count")+" name:"+map.get("name")+" key:"+map.get("key"));
55         }
56     }
57     static class MapComparatorDesc implements Comparator<Map<String, Object>> {
58         @Override
59         public int compare(Map<String, Object> m1, Map<String, Object> m2) {
60             Integer v1 = Integer.valueOf(m1.get("count").toString());
61             Integer v2 = Integer.valueOf(m2.get("count").toString());
62             if (v2 != null) {
63                 return v2.compareTo(v1);
64             }
65             return 0;
66         }
67 
68     }
69     static class MapComparatorAsc implements Comparator<Map<String, Object>> {
70         @Override
71         public int compare(Map<String, Object> m1, Map<String, Object> m2) {
72             Integer v1 = Integer.valueOf(m1.get("count").toString());
73             Integer v2 = Integer.valueOf(m2.get("count").toString());
74             if(v1 != null){
75                 return v1.compareTo(v2);
76             }
77             return 0;
78         }
79 
80     }
81 }
82 
83 /*運行結果
84 排序前:
85 count:2 name:abc key:acv
86 count:3 name:bbc key:bcv
87 count:1 name:cbc key:ccv
88 count:4 name:cbc key:ccv
89 降序:
90 count:4 name:cbc key:ccv
91 count:3 name:bbc key:bcv
92 count:2 name:abc key:acv
93 count:1 name:cbc key:ccv
94 升序:
95 count:1 name:cbc key:ccv
96 count:2 name:abc key:acv
97 count:3 name:bbc key:bcv
98 count:4 name:cbc key:ccv
99 */

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM