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 */
集合排序,编码测试正确