HashMap实现排序
在开发中遇到需求,将返回的List中的map按照日期进行升序排序
1 class Test{
2 public static void main(String[] args) { 3 Map<String, Object> map2 = new HashMap<String, Object>();
1 class Test{
2 public static void main(String[] args) {
3 Map<String, Object> map2 = new HashMap<String, Object>();
4 map2.put("dt", "2021-08-07"); 5 map2.put("age",50); 6 7 Map<String, Object> map3 = new HashMap<String, Object>(); 8 map2.put("dt", "2021-08-06"); 9 map3.put("age", 20); 10 11 Map<String, Object> map4 = new HashMap<String, Object>(); 12 map2.put("dt", "2021-08-09"); 13 map4.put("age", 30); 14 List<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); 15 list.add(map2); 16 list.add(map3); 17 list.add(map4); 18 19 List<Map<String, Object>> collect =list.stream().sorted(Comparator.comparing(TestJin::comparingByAge)).collect(Collectors.toList()); 20 //输出List中对象,即按照年龄升序 21 system.out.println('collect'); 22 23 //输出List中对象,即按照年龄降序 24 List<Map<String, Object>> collect1 = list.stream().sorted(Comparator.comparing(TestJin::comparingByAge).reversed()).collect(Collectors.toList()); 25 system.out.println('collect1'); 26 } 27 //实现按照名字顺序排序 28 private static String comparingByName(Map<String, Object> map){ 29 return (String) map.get("name"); 30 } 31 //实现按照年龄大小排序 32 private static Integer comparingByAge(Map<String, Object> map){ 33 return (Integer) map.get("age"); 34 } 35
}
//jdk8可用lambda方法实现排序
List<HashMap<String, Object>> child = (List<HashMap<String, Object>>) pp.get("child"); //实现根据id值进行排序 if (child != null && child.size() > 1) { Collections.sort(child, (Comparator<Map<String, Object>>) (o1, o2) -> { Integer o1Value = Integer.valueOf(o1.get("id").toString()); Integer o2Value = Integer.valueOf(o2.get("id").toString()); return o2Value.compareTo(o1Value); }); }

浙公网安备 33010602011771号