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 62aa933ee..f6c9b7e64 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 @@ -1519,4 +1519,30 @@ public class MapUtil { } return value; } + + /** + * 将一个Map按照固定大小拆分成多个子Map + * + * @param map Map + * @param size 子Map的大小 + * @return 子Map列表 + */ + public static List> partition(Map map, int size) { + if (map == null) { + throw new NullPointerException("Map must not be null"); + } else if (size <= 0) { + throw new IllegalArgumentException("Size must be greater than 0"); + } + List> list = new ArrayList<>(); + Iterator> iterator = map.entrySet().iterator(); + while (iterator.hasNext()) { + Map subMap = new HashMap<>(size); + for (int i = 0; i < size && iterator.hasNext(); i++) { + Map.Entry entry = iterator.next(); + subMap.put(entry.getKey(), entry.getValue()); + } + list.add(subMap); + } + return list; + } }