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 */
集合排序,編碼測試正確