From 5a1826259ad1e880beaaab37732d8518436abe3d Mon Sep 17 00:00:00 2001 From: googoo-s <3051227558@qq.com> Date: Sun, 4 Sep 2022 20:25:19 +0800 Subject: [PATCH] =?UTF-8?q?MapUtil=E5=A2=9E=E5=8A=A0=E6=A0=B9=E6=8D=AEentr?= =?UTF-8?q?y=E5=88=86=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/hutool/core/map/MapUtil.java | 42 ++++++++++++------- 1 file changed, 27 insertions(+), 15 deletions(-) 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 59b6b4f7c..e8051d9e0 100755 --- a/hutool-core/src/main/java/cn/hutool/core/map/MapUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/map/MapUtil.java @@ -12,22 +12,8 @@ import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.StrUtil; -import java.util.AbstractMap; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.Date; -import java.util.HashMap; -import java.util.IdentityHashMap; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.Map.Entry; -import java.util.NavigableMap; -import java.util.Set; -import java.util.SortedMap; -import java.util.TreeMap; import java.util.concurrent.ConcurrentHashMap; import java.util.function.BiFunction; @@ -509,6 +495,32 @@ public class MapUtil { return resultList; } + /** + * 根据给定的entry列表,根据entry的key进行分组; + * + * @param 键类型 + * @param 值类型 + * @param entries entry列表 + * @return entries + */ + public static Map> grouping(Iterable> entries) { + final Map> map = new HashMap<>(DEFAULT_INITIAL_CAPACITY); + if (CollUtil.isEmpty(entries)) { + return map; + } + for (Map.Entry pair : entries) { + if (map.containsKey(pair.getKey())) { + List values = map.get(pair.getKey()); + values.add(pair.getValue()); + } else { + List values = CollUtil.newArrayList(); + values.add(pair.getValue()); + map.put(pair.getKey(), values); + } + } + return map; + } + /** * 将已知Map转换为key为驼峰风格的Map
* 如果KEY为非String类型,保留原值