MapUtil增加flatten方法(pr#1368@Gitee)

This commit is contained in:
Looly
2025-07-30 19:14:23 +08:00
parent 4dcbc74cd1
commit 59f33fd12d

View File

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