利用Comparator根據多個Map中某個共同屬性的value值對其進行排序
阿新 • • 發佈:2019-01-09
最近在工作中遇到一個場景,需要對List<Map<String, String>>這樣的結構進行排序,完成此功能後感覺這是一個通用方法,故將此記錄下來,留待以後可能之使用。
其具體情景為,當下有一個List,其中Map結構均相似,且存在一共同屬性key-indicator,並要根據其對應的value大小,對此List進行排序,最終寫成方法如下,經檢測可完成相應需求。
private List<Map<String, String>> getSortData(String indicator, List<Map<String, String>> data) { class MapSort implements Comparator<Map<String, String>> { private String keyName = ""; private MapSort(String keyName) { this.keyName = keyName; } public int compare(Map<String, String> mp1, Map<String, String> mp2) { Double d1 = Double.valueOf(mp1.get(this.keyName)); Double d2 = Double.valueOf(mp2.get(this.keyName)); return d1.compareTo(d2); } } MapSort mapSort = new MapSort(indicator); Collections.sort(data, mapSort); return data; }