最近在工作中遇到一個場景,需要對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;
}