鉴于以下情况:
Map<String, Object> map1 = new HashMap();
Map<String, String> map2 = new HashMap();
map2.put("Grp A", "a");
map2.put("Grp B", "b");
map1.put("Grp",map2);
Run Code Online (Sandbox Code Playgroud)
如何从map1中获取“ Grp A”值?
更改map1为:
Map<String, Map<String, String>> map1 = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)
然后map1.get("Grp").get("Grp A")将工作。
当然,通常,将其存储map1.get("Grp")在变量中并在调用第二个变量之前检查它是否不为null 会更安全get():
String value = null;
Map<String, String> inner = map1.get("Grp");
if (inner != null) {
value = inner.get("Grp A");
}
Run Code Online (Sandbox Code Playgroud)
如果必须保持map1为Map<String, Object>(例如,如果必须在其中存储不同类型的值),则必须检查从外部获取的值的类型Map,并将其转换为,Map然后再获取内部值:
String value = null;
Object innerObj = map1.get("Grp");
if (innerObj instanceof Map<?,?>) {
Map<?,?> inner = (Map<?,?>) map1.get("Grp");
Object obj = inner.get("Grp A");
if (obj instanceof String) {
value = (String) obj;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |