栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java-小工具类-写了一个Map工具类,递归获取key对应的value

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java-小工具类-写了一个Map工具类,递归获取key对应的value

最近项目处理的数据比较复杂,对于嵌套多层且层数不明,key不明的map取值较难,写了一个工具类,递归获取Map中key指定的value。
功能:
		1.替换指定key对应的value(替换单个)
		2.替换指定key对应的value(替换所有)
		3.获取嵌套map中key对应的value

代码如下:

import lombok.extern.slf4j.Slf4j;

import java.util.List;
import java.util.Map;
import java.util.Set;

@Slf4j
public class MapUtils {

    
    public static Object replace(Map map,String key,Object value){

        Set keys = map.keySet();
        if(keys.contains(key)){
            map.put(key,value);
            return map;
        }else{
            for(String k:keys){
                if(map.get(k) instanceof Map){
                    Map m = (Map) map.get(k);
                    replace(m,key,value);
                }else if(map.get(k) instanceof List){
                    List m = (List) map.get(k);
                    for(Object l: m){
                        if(l instanceof Map){
                            replace((Map)l,key,value);
                        }
                    }
                }
            }
        }

        return map;
    }

    
    public static Map replaceAll(Map map,String key,Object value){

        Set keys = map.keySet();
        if(keys.contains(key)) {
            map.put(key, value);
        }else {
            for(String k:keys){
                if(map.get(k) instanceof Map){
                    Map m = (Map) map.get(k);
                    replaceAll(m,key,value);
                }else if(map.get(k) instanceof List){
                    List m = (List) map.get(k);
                    for(Object l: m){
                        if(l instanceof Map){
                            replaceAll((Map)l,key,value);
                        }
                    }
                }
            }
        }
        return map;
    }

    //获取value
    public static Object getValue(Map map,String key){
        String tmpKey;

        if(key.indexOf(".")==-1){
            return map.get(key);
        }else{
            tmpKey=key.substring(0,key.indexOf("."));
        }
        Set keys = map.keySet();
        if(keys.contains(tmpKey)){
            Map m = (Map) map.get(tmpKey);
            return getValue(m,key.substring(key.indexOf(".")+1));
        }else{
            return null;
        }
    }
}

欢迎路过的大佬指正,期勉。

2021年10月24日 天气·晴
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/346266.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号