I am pulling a map value from an external service (which has nested maps).
I want to get a value nested a few levels down in that map and perform some actions.
The following works but is there a better way to do this?
I was attempting with Optional
but I don't think it is possible in this case as I can't pass in the method reference something like the following:
Optional.ofNullable(map1)
.map(Map::get)
......
The following is the working example I am trying to amend with Optional or any other suggestions. Please advice.
import org.apache.commons.collections.MapUtils;
public class A{
private void methodA(){
Map<String,Object> map1 = getMap(); // getMap() can return null
if(MapUtils.isNotEmpty(map1)){
Map<String, Map<String, String>> map2 = (Map<String, Map<String, String>>) map1.get("key2");
if(MapUtils.isNotEmpty(map2)){
Map<String, String> map3 = map2.get("key3");
if(MapUtils.isNotEmpty(map3)){
// do something
}
}
}
}
This is the closest answer I found but don't find it to be relevant for a nested map within a map within a map. Java 8 nested null check for a string in a map in a list