mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-08-18 20:38:02 +08:00
MapUtil
增加flatten方法(pr#1368@Gitee)
This commit is contained in:
@@ -8,7 +8,8 @@
|
||||
* 【captcha】 `MathGenerator`四则运算方式支持不生成负数结果(pr#1363@Gitee)
|
||||
* 【core 】 增加`MapValueProvider`和`RecordConverter`并支持Record转换(issue#3985@Github)
|
||||
* 【core 】 `CalendarUtil`增加`isSameYear`和`calendar`方法(issue#3995@Github)
|
||||
* 【core 】 `DateUtil`新增方法`yyyy-MM-dd'T'HH:mmXXX`格式支持(pr#1367@Gitee)
|
||||
* 【core 】 `DateUtil`增加`yyyy-MM-dd'T'HH:mmXXX`格式支持(pr#1367@Gitee)
|
||||
* 【core 】 `MapUtil`增加flatten方法(pr#1368@Gitee)
|
||||
|
||||
### 🐞Bug修复
|
||||
* 【extra 】 `Sftp``reconnectIfTimeout`方法改为捕获所有异常(issue#3989@Github)
|
||||
|
@@ -1545,27 +1545,6 @@ public class MapUtil {
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归调用将多层级Map处理为一个层级Map类型
|
||||
*
|
||||
* @param map 入参Map
|
||||
* @param flatMap 单层级Map返回值
|
||||
* @param <K> 键类型
|
||||
* @param <V> 值类型
|
||||
*/
|
||||
private static <K, V> void flatten(Map<K, V> map, Map<K, V> flatMap) {
|
||||
for (Map.Entry<K, V> entry : map.entrySet()) {
|
||||
K key = entry.getKey();
|
||||
V value = entry.getValue();
|
||||
if (value instanceof Map) {
|
||||
flatten((Map<K, V>) value, flatMap);
|
||||
} else {
|
||||
flatMap.put(key, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 将多层级Map处理为一个层级Map类型
|
||||
*
|
||||
@@ -1574,10 +1553,35 @@ public class MapUtil {
|
||||
* @param <K> 键类型
|
||||
* @param <V> 值类型
|
||||
*/
|
||||
public static <K, V> Map<K, V> flatten(Map<K, V> map) {
|
||||
public static <K, V> Map<K, V> flatten(final Map<K, V> map) {
|
||||
return flatten(map, new HashMap<>());
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归调用将多层级Map处理为一个层级Map类型
|
||||
*
|
||||
* @param map 入参Map
|
||||
* @param flatMap 单层级Map返回值
|
||||
* @param <K> 键类型
|
||||
* @param <V> 值类型
|
||||
* @return 单层级Map返回值
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <K, V> Map<K, V> flatten(final Map<K, V> map, Map<K, V> flatMap) {
|
||||
Assert.notNull(map);
|
||||
Map<K, V> flatMap = new HashMap<>();
|
||||
flatten(map, flatMap);
|
||||
if(null == flatMap){
|
||||
flatMap = new HashMap<>();
|
||||
}
|
||||
|
||||
Map<K, V> finalFlatMap = flatMap;
|
||||
map.forEach((k, v) -> {
|
||||
if (v instanceof Map) {
|
||||
flatten((Map<K, V>) v, finalFlatMap);
|
||||
} else {
|
||||
finalFlatMap.put(k, v);
|
||||
}
|
||||
});
|
||||
|
||||
return flatMap;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user