当前位置: 代码迷 >> 综合 >> TreeMap 默认是根据key排序的,如何降序呢?
  详细解决方案

TreeMap 默认是根据key排序的,如何降序呢?

热度:66   发布时间:2023-12-27 13:31:11.0
/***  测试treeMap的有序性*/@Testpublic void testTreeMap() {List<Order> orders = new ArrayList<>();Order o1 = new Order();o1.setName("0001.01");o1.setId(1);o1.setDescription("111111111");Order o2 = new Order();o2.setName("0001.01");o2.setId(2);o2.setDescription("22222222");Order o3 = new Order();o3.setName("0001.02 ");o3.setId(3);o3.setDescription("b   333333333333333");Order o4 = new Order();o4.setName("0001.02");o4.setId(4);o4.setDescription("d   4444444");Order o5 = new Order();o5.setName("0001.03");o5.setId(5);o5.setDescription("5555555555");orders.add(o5);orders.add(o4);orders.add(o3);orders.add(o2);orders.add(o1);// TreeMap底层是根据红黑树的数据结构构建的,默认是根据key的自然排序来组织(比如integer的大小,String的字典排序)。// 所以,TreeMap只能根据key来排序Map<String, List<Order>> treeMap = orders.stream().collect(Collectors.groupingBy(Order::getName,TreeMap::new,Collectors.toList()));System.out.println(treeMap);// 让treeMap 降序TreeMap<String,List<Order>> descTreeMap= new TreeMap<String,List<Order>>(new Comparator<String>(){public int compare(String a,String b){return b.compareTo(a);}});Map<String, List<Order>> hashMap = orders.stream().collect(Collectors.groupingBy(Order::getName,HashMap::new,Collectors.toList()));// map 在java8的第一种遍历方式hashMap.forEach((k, v) ->{descTreeMap.put(k,v);});// map 在java8的第二种遍历方式
//        hashMap.keySet().forEach(key ->  descTreeMap.put(key,hashMap.get(key)));System.out.println(descTreeMap);}

 

  相关解决方案