如何在Map中存储hashmap对象<String,Object>最多3层,输出应该是第3层的值

问题描述 投票:0回答:1

PFB 问题代码:

公共类测试类{

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);
    
    getValue("B",map1);
}

public static Object getValue(String s, Map<String,Object> map) {
    }

这是面试时问到的,我一无所知。面试官希望 getvalue 方法只返回“b”,而它返回完整的 map3 对象值

有人可以帮忙吗

java hashmap logic
1个回答
0
投票

getValue()
的递归解决方案:

  1. map 获取与键
    s
    关联的
  2. 如果这个value的类型是
    Map
    :
  • 返回
    getValue()
    ,并带有参数
    s
  • 否则 - 返回
public static Object getValue(String s, Map<String, Object> map) {
    Object value = map.get(s);
    if (value instanceof Map) {
        return getValue(s, (Map<String, Object>) value);
    }
    return value;
}
© www.soinside.com 2019 - 2024. All rights reserved.