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类型,保留原值