如何在Java中访问嵌套的HashMaps?实现用法
我有一个Java中的HashMap,其内容(你们可能都知道)可以通过以下方式访问
HashMap.get("keyname");
如果一个在另一个HashMap中有一个HashMap,即嵌套的HashMap,我将如何访问内容?我可以这样做吗,内联:
HashMap.get("keyname").get("nestedkeyname");
谢谢。
我有一个Java中的HashMap,其内容(你们可能都知道)可以通过以下方式访问
HashMap.get("keyname");
如果一个在另一个HashMap中有一个HashMap,即嵌套的HashMap,我将如何访问内容?我可以这样做吗,内联:
HashMap.get("keyname").get("nestedkeyname");
谢谢。
你可以像你想象的那样去做。但是你的HashMap必须模板化:
Map<String, Map<String, String>> map =
new HashMap<String, Map<String, String>>();
否则,您必须在从第一个地图中检索第二个地图后进行强制转换。Map
Map map = new HashMap();
((Map)map.get( "keyname" )).get( "nestedkeyname" );
您可以通过重复来获得嵌套值,但是对于深度嵌套的映射,您必须进行大量转换。一种更简单的方法是使用泛型方法来获取嵌套值。.get()
Map
public static <T> T getNestedValue(Map map, String... keys) {
Object value = map;
for (String key : keys) {
value = ((Map) value).get(key);
}
return (T) value;
}
// Map contents with string and even a list:
{
"data": {
"vehicles": {
"list": [
{
"registration": {
"owner": {
"id": "3643619"
}
}
}
]
}
}
}
List<Map> list = getNestedValue(mapContents, "data", "vehicles", "list");
Map first = list.get(0);
String id = getNestedValue(first, "registration", "owner", "id");