Map按Key排序和按Value排序
Map按Key排序和按Value排序
在Java中,有时候我们需要对Map进行排序,根据业务需要,可能是通过Key来进行排序,也可能是通过Value来进行排序,jdk8之后,我们可以通过stream来实现。
按Key排序
//对MAP按照key来排序
public static <K extends Comparable, V extends Comparable> Map<K, V> sortMapByKey(Map<K, V> aMap) {
HashMap<K, V> outMap = new LinkedHashMap<>();
aMap.entrySet()
.stream()
.sorted((p1, p2) -> p2.getKey().compareTo(p1.getKey()))
.collect(Collectors.toList()).forEach(ele -> outMap.put(ele.getKey(), ele.getValue()));
return outMap;
}
按Value排序
//对MAP按照Value来排序
public static <K extends Comparable, V extends Comparable> Map<K, V> sortMapByValue(Map<K, V> aMap) {
HashMap<K, V> outMap = new LinkedHashMap<>();
aMap.entrySet()
.stream()
.sorted((p1, p2) -> p2.getValue().compareTo(p1.getValue()))
.collect(Collectors.toList()).forEach(ele -> outMap.put(ele.getKey(), ele.getValue()));
return outMap;
}