Java基礎之集合List<map>進行排序
阿新 • • 發佈:2018-11-08
現有以下集合List<Map<String,String>>,
集合中元素Map中主要包含“code”,“name”等屬性,
要求按code升序,name降序的順序對集合進行重新排序;
實現Collections介面進行排序
1,先根據需求封裝List<Map<String,String>>
public static void main(String[] args) { List<Map<String, String>> list = new ArrayList<>(); Map<String, String> mapOne = new HashMap<>(); mapOne.put("code", "001"); mapOne.put("name", "小a"); Map<String, String> mapTwo = new HashMap<>(); mapTwo.put("code", "003"); mapTwo.put("name", "小b"); Map<String, String> mapThree = new HashMap<>(); mapThree.put("code", "002"); mapThree.put("name", "小c"); list.add(mapOne); list.add(mapTwo); list.add(mapThree); //進行排序 List<Map<String, String>> listResult = listSort(list); //控制檯列印 for (Map<String, String> map : listResult) { System.out.println("編號:" + map.get("code") + ",姓名:" + map.get("name")); } }
2,根據問題,呼叫Conllections方法進行兩次排序
public static List<Map<String, String>> listSort(List<Map<String, String>> list) { //實現Collections介面進行排序 Collections.sort(list, new Comparator<Map<String, String>>() { @Override public int compare(Map<String, String> o1, Map<String, String> o2) { return o1.get("code").compareTo(o2.get("code")); } }); //在對已經排序完成的進行降序 Collections.sort(list, new Comparator<Map<String, String>>() { @Override public int compare(Map<String, String> o1, Map<String, String> o2) { return -o1.get("name").compareTo(o2.get("name")); } }); return list; }
關於compareTo用法: