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
有人知道包含类似 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