迭代嵌套(多维)hashmap

Jas*_*gar 2 java

我有一个HashMap<String, Object>看起来像这样的,当我在调用它的ToString():

{somekey=false, anotherKey=someString, thirdKey={nestedKey=hello, nestedKey2=world,etc=etcetcetc}}
Run Code Online (Sandbox Code Playgroud)

在我的脚本中的某个点,我想迭代"thirdKey"设置为它自己的地图.是否有一个共同的约定用于隔离"嵌套"HashMap并将其用作自己的一维地图?

小智 6

这是我的代码,用于递归提取地图中的所有值(以及这些地图中的地图).

public List<Object> getValues(Map<String, Object> map) {

    List<Object> retVal = new ArrayList<Object>();

    for (Map.Entry<String, Object> entry : map.entrySet()) {
        Object value = entry.getValue();

        if (value instanceof Map) {
            retVal.addAll(getValues((Map) value));
        } else {
            retVal.add(value);
        }
    }

    return retVal;
}
Run Code Online (Sandbox Code Playgroud)

正如维克多已经说过的那样,我认为没有真正的惯例.

编辑: 当然,您也可以将键和值写入新的Map("展平"它).我刚刚将值添加到List中,因为这样,当其中一个嵌套映射使用已存在的键时,您不会遇到问题.