List<map<string,object>> 集合排序

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

集合排序,编码测试正确

猜你喜欢

转载自www.cnblogs.com/jia-0112/p/11956328.html