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 985c307f1..1128b510d 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 @@ -1549,9 +1549,10 @@ public class MapUtil { * 将多层级Map处理为一个层级Map类型 * * @param map 入参Map + * @param 键类型 + * @param 值类型 * @return 单层级Map返回值 - * @param 键类型 - * @param 值类型 + * @since 5.8.40 */ public static Map flatten(final Map map) { return flatten(map, new HashMap<>()); @@ -1565,17 +1566,19 @@ public class MapUtil { * @param 键类型 * @param 值类型 * @return 单层级Map返回值 + * @since 5.8.40 */ @SuppressWarnings("unchecked") public static Map flatten(final Map map, Map flatMap) { Assert.notNull(map); - if(null == flatMap){ + if (null == flatMap) { flatMap = new HashMap<>(); } Map finalFlatMap = flatMap; map.forEach((k, v) -> { - if (v instanceof Map) { + // 避免嵌套循环 + if (v instanceof Map && v != map) { flatten((Map) v, finalFlatMap); } else { finalFlatMap.put(k, v);