diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/map/MapUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/map/MapUtil.java index 9aaad08bc..9b934caa5 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/map/MapUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/map/MapUtil.java @@ -1346,4 +1346,32 @@ public class MapUtil extends MapGetUtil { } return value; } + + /** + * 将一个Map按照固定大小拆分成多个子Map + * + * @param 键类型 + * @param 值类型 + * @param map Map + * @param size 子Map的大小 + * @return 子Map列表 + * @since 5.8.26 + */ + public static List> partition(final Map map, final int size) { + Assert.notNull(map); + if (size <= 0) { + throw new IllegalArgumentException("Size must be greater than 0"); + } + final List> list = new ArrayList<>(); + final Iterator> iterator = map.entrySet().iterator(); + while (iterator.hasNext()) { + final Map subMap = new HashMap<>(size); + for (int i = 0; i < size && iterator.hasNext(); i++) { + final Map.Entry entry = iterator.next(); + subMap.put(entry.getKey(), entry.getValue()); + } + list.add(subMap); + } + return list; + } }