You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现三级嵌套Map<String,Object>的getValue方法获取第三层目标值

实现嵌套Map的递归取值方法

针对你遇到的三级嵌套Map取值需求,我们可以通过递归遍历的方式实现getValue方法,自动穿透嵌套的Map结构,直到返回非Map类型的目标值"b"。

完整实现代码

import java.util.HashMap;
import java.util.Map;

public class TestClass {

    public static void main(String[] args) {
        Map<String,Object> map1 = new HashMap<String,Object>();
        Map<String,Object> map2 = new HashMap<String,Object>();
        Map<String,Object> map3 = new HashMap<String,Object>();
        
        map1.put("A", "a");
        map1.put("B", map2);
        map1.put("C", 1);
        
        map2.put("A", "a");
        map2.put("B", map3);
        map2.put("C", 1);
        
        map3.put("A", "a");
        map3.put("B", "b");
        map3.put("C", 1);
        
        Object result = getValue("B", map1);
        System.out.println(result); // 输出 "b"
    }

    public static Object getValue(String s, Map<String,Object> map) {
        // 获取当前层级的对应值
        Object value = map.get(s);
        // 判断值是否为Map类型,若是则递归遍历
        if (value instanceof Map) {
            return getValue(s, (Map<String, Object>) value);
        }
        // 非Map类型则直接返回
        return value;
    }
}

代码逻辑说明

  1. 初始取值:从传入的Map中获取指定keys对应的value
  2. 递归判断:如果获取到的value还是Map类型,就继续调用getValue方法,传入这个子Map
  3. 终止条件:当获取到的value不是Map类型时,直接返回该值(也就是目标的"b")
  4. 健壮性处理:如果某一层级不存在指定key,方法会返回null,避免空指针异常

内容的提问来源于stack exchange,提问作者Kirti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 18:57:35