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;
}
}
}
}