您当前的位置: 首页 >  学无止境 >  文章详情

java中根据map的key排序、Map按照value排序

时间: 2023-05-31 【学无止境】 阅读量:共1553人围观

简介 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。

TreeMap

基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。

HashMap

没有顺序,它是按照key的HashCode来实现的,对于这个无序的HashMap我们要怎么来实现排序呢?参照TreeMap的value排序。

根据map的key排序

/** * 根据map的key排序 * * @param map 待排序的map * @param isDesc 是否降序,true:降序,false:升序 * @return 排序好的map * @author zhangfuxiang */ public static <K extends Comparable<? super K>, V> Map<K, V> sortByKey(Map<K, V> map, boolean isDesc) { Map<K, V> result = Maps.newLinkedHashMap(); if (isDesc) { map.entrySet().stream().sorted(Map.Entry.<K, V>comparingByKey().reversed()) .forEachOrdered(e -> result.put(e.getKey(), e.getValue())); } else { map.entrySet().stream().sorted(Map.Entry.<K, V>comparingByKey()) .forEachOrdered(e -> result.put(e.getKey(), e.getValue())); } return result; }

Map按照value排序

/** * 功能描述: Map按照value排序 * 升叙排列 * @Param: [aMap] * @Return: java.util.Map<K,V> * @Author: zhangfuxiang * @Date: 2021/6/9 10:00 */ public static <K extends Comparable, V extends Comparable> Map<K, V> sortMapByValues(Map<K, V> aMap) { HashMap<K, V> finalOut = new LinkedHashMap<>(); aMap.entrySet() .stream() .sorted((p1, p2) -> p1.getValue().compareTo(p2.getValue())) .collect(Collectors.toList()).forEach(ele -> finalOut.put(ele.getKey(), ele.getValue())); return finalOut; }
文章评论
总共 0 条评论
这篇文章还没有收到评论,赶紧来抢沙发吧~
Copyright (C) 2023- 小祥驿站 保留所有权利 蜀ICP备 17034318号-2  公安备案号 50010302004554