java8使用lambda對Map排序
阿新 • • 發佈:2019-01-05
java8以前要對map排序比較繁瑣複雜,使用java8的lambda表示式排序要簡單很多,直接上程式碼
public static void main(String[] args) { // 初始資料 Map<String, Integer> smap = new HashMap<>(); smap.put("1", 11); smap.put("3", 33); smap.put("2", 22); // 1.8以前 List<Map.Entry<String, Integer>> list1 = new ArrayList<>(); list1.addAll(smap.entrySet()); Collections.sort(list1, new Comparator<Map.Entry<String, Integer>>() { @Override public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) { return o1.getValue() - o2.getValue(); } }); for (Entry<String, Integer> entry : list1) { System.out.println("key:" + entry.getKey() + ",value:" + entry.getValue()); } // 1.8使用lambda表示式 List<Map.Entry<String, Integer>> list2 = new ArrayList<>(); list2.addAll(smap.entrySet()); Collections.sort(list2, (o1, o2) -> o1.getValue()-o2.getValue()); list2.forEach(entry -> { System.out.println("key:" + entry.getKey() + ",value:" + entry.getValue()); }); }