From 2d3d41c9f28718a52123f4c2ff59ecf1bc750d83 Mon Sep 17 00:00:00 2001 From: Looly Date: Sun, 31 Jan 2021 19:19:28 +0800 Subject: [PATCH] add method --- CHANGELOG.md | 1 + .../main/java/cn/hutool/core/map/MapUtil.java | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 70cbc47ef..7a88ca315 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ * 【db 】 ThreadUtil增加createScheduledExecutor和schedule方法(issue#I2NUTC@Gitee) * 【core 】 ImgUtil增加getImage方法(issue#I2DU1Z@Gitee) * 【core 】 DateUtil.beginOfHour(pr#269@Gitee) +* 【core 】 MapUtil增加sortByValue(pr#259@Gitee) ### Bug修复 * 【core 】 修复FileUtil.move以及PathUtil.copy等无法自动创建父目录的问题(issue#I2CKTI@Gitee) diff --git a/hutool-core/src/main/java/cn/hutool/core/map/MapUtil.java b/hutool-core/src/main/java/cn/hutool/core/map/MapUtil.java index 1179453a9..29081ead1 100644 --- a/hutool-core/src/main/java/cn/hutool/core/map/MapUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/map/MapUtil.java @@ -796,6 +796,26 @@ public class MapUtil { return result; } + /** + * 按照值排序,可选是否倒序 + * + * @param map 需要对值排序的map + * @param 键类型 + * @param 值类型 + * @param isDesc 是否倒序 + * @return Map 排序后新的Map + * @since 5.5.8 + */ + public static > Map sortByValue(Map map, boolean isDesc) { + Map result = new LinkedHashMap<>(); + Comparator> entryComparator = Entry.comparingByValue(); + if(isDesc){ + entryComparator = entryComparator.reversed(); + } + map.entrySet().stream().sorted(entryComparator).forEachOrdered(e -> result.put(e.getKey(), e.getValue())); + return result; + } + /** * 创建代理Map
* {@link MapProxy}对Map做一次包装,提供各种getXXX方法