Java 映射 util 方法以深入检查 containKey?

Java Map util method to deep check for containKey?

有人知道包含类似 Util.deepContains() 方法的 Util 库吗?我必须检查一张地图,它是一个键的嵌套条目。我当然可以编写自己的逻辑,但我喜欢使用 Utils 来使我的代码更简洁并节省一些单元测试。

映射结构是Map<String, Map<String, Object>>,其中Object可以是另一个Map等等。

NO,我不知道库中有任何现有函数。但是,如果存在的话,是否值得仅因为一个用例而导入 whole 库?随意创建您自己的函数。考虑以下示例映射结构:

{
    map2={
        map3={
            4=4, 
            5=5
        }
    }, 
    map4={
        6=6, 
        7=7
    }
}

无论嵌套了多少 Map<String, Object>,以下递归函数都会迭代所有值,直到找到正确的值。在比较过程中,由于比较正确,您必须从 Object 转换为 T

static <T> boolean deepContains(Map<?, ?> map, T item) {
    for (Entry<?, ?> entry: map.entrySet()) {
        final Object value = entry.getValue();
        boolean returned = false;
        if (value instanceof Map<?, ?>) {
            returned = deepContains((Map<?, ?>) value, item);
        } else {
            returned = item.getClass().cast(value).equals(item);
        }
        if (returned) {return true;}
    }
    return false;
}

用法:

boolean result = deepContains(map, "4"); // returns true
boolean result = deepContains(map, "7"); // returns true
boolean result = deepContains(map, "8"); // returns false