package com.test;
import cn.hutool.core.date.DateUtil;
import com.google.common.collect.Maps;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Test {
public static void main(String[] args) {
// 3 1 2
Map<String, Date> map = new HashMap<>();
map.put("2", DateUtil.parseDate("2023-01-22"));
map.put("3", DateUtil.parseDate("2023-01-20"));
map.put("1", DateUtil.parseDate("2023-01-21"));
List<String> patIds = sortByValue(map, true).entrySet().stream().
map(Map.Entry::getKey).collect(Collectors.toList());
System.out.println(patIds);
}
/**
* 根据value倒序输出map
* @param map 原map
* @param isDesc 是否倒序 ture 倒序输出,false 顺序输出
*/
public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> map, boolean isDesc) {
Map<K, V> result = Maps.newLinkedHashMap();
if (isDesc) {
map.entrySet().stream().sorted(Map.Entry.<K, V>comparingByValue().reversed())
.forEach(e -> result.put(e.getKey(), e.getValue()));
} else {
map.entrySet().stream().sorted(Map.Entry.<K, V>comparingByValue())
.forEachOrdered(e -> result.put(e.getKey(), e.getValue()));
}
return result;
}
/**
* 根据key倒序输出排序
* @param map 原map
* @param isDesc 是否倒序 ture 倒序输出,false 顺序输出
*/
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;
}
}
Strean流按mapKey或者value倒序、顺序对map进行排序
最新推荐文章于 2024-08-12 17:04:28 发布