1
我有一个第三方方法(即InfoEndpoint.html#invoke()),它给了我一个使用地图的对象结构(地图中的地图...)。我想以一种不太难看的方式浏览这个数据结构。 :)在Java中查询嵌套的地图
下面是一个以“手动Java方式”(第17-31行)和“Groovy方式”(最后一行):example这样的结构获取值的示例。
我想要有一些类似于Groovy的方法,但我没有Groovy在这里,该项目是纯Java。如果可能的话,我并不想为此编写代码(或者太多难看的代码)。你碰巧知道是否有一个图书馆可以帮助我吗?
这里是一个丑陋的,Java的解决方案,我不想使用:
public class MapNavigator {
public static void main(String[] args) {
Map<String, Object> people = new HashMap<>();
Map<String, Object> holmes = new HashMap<>();
Map<String, Object> address = new HashMap<>();
address.put("street", "Baker St");
holmes.put("address", address);
people.put("holmes", holmes);
System.out.println(get(people, "holmes.address.street"));
}
public static Object get(Map<String, Object> map, String path) {
return get(map, Arrays.asList(path.split("\\.")));
}
private static Object get(Map<String, Object> map, List<String> pathElements) {
if (map == null || pathElements.size() == 0) {
return null;
}
else if (pathElements.size() == 1) {
return map.get(pathElements.get(0));
}
else {
String head = pathElements.get(0);
List<String> tail = pathElements.subList(1, pathElements.size());
Object object = map.get(head);
if (object instanceof Map) {
return get((Map<String, Object>) object, tail);
}
else {
return null;
}
}
}
}