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 */