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:
@@ -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);
|
||||||
|
Reference in New Issue
Block a user