如何实现三级嵌套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; } }
代码逻辑说明
- 初始取值:从传入的Map中获取指定key
s对应的value - 递归判断:如果获取到的value还是
Map类型,就继续调用getValue方法,传入这个子Map - 终止条件:当获取到的value不是Map类型时,直接返回该值(也就是目标的"b")
- 健壮性处理:如果某一层级不存在指定key,方法会返回
null,避免空指针异常
内容的提问来源于stack exchange,提问作者Kirti
相关产品推荐
相关产品推荐

