Измените map1
на:
Map<String, Map<String, String>> map1 = new HashMap<>();
Тогда будет работать map1.get("Grp").get("Grp A")
.
Конечно, в общем случае безопаснее хранить map1.get("Grp")
в переменной, иперед вызовом второго get()
:
String value = null;
Map<String, String> inner = map1.get("Grp");
if (inner != null) {
value = inner.get("Grp A");
}
проверьте, не равен ли оно нулю. Если вы должны оставить 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;
}
}