

Please mark as best answer if it solves your queryList<City> cities = new List<City>();
cities.add(new City('Mesa','Arizona','US'));
cities.add(new City('Phoenix','Arizona','US'));
cities.add(new City('Miami','Florida','US'));
cities.add(new City('Patna','Bihar','IN'));
cities.add(new City('Samastipur','Bihar','IN'));
cities.add(new City('Brisbane','Queensland','AU'));
cities.add(new City('Caboolture','Queensland','AU'));
cities.add(new City('Airdrie','Alberta','CA'));
cities.add(new City('Camrose','Alberta','CA'));
Map<String,Map<String,List<String>>> mapOfMaps = new Map<String,Map<String,List<String>>>();
for(City cityObj : Cities){
/*
Logic could be implemented better
*/
if(mapOfMaps.containsKey(cityObj.country)){
mapOfMaps.get(cityObj.state).add(cityObj.cityName);
}
else{
List<String> cities = new List<String>();
cities.add(cityObj.cityName);
Map<String,List<String>> stateToCities = new Map<String,List<String>>();
stateToCities.put(cityObj.state,stateToCities);
mapOfMaps.put(cityObj.country,stateToCities);
}
}
public Class City{
String cityName{ get; set; }
String state{ get; set; }
String country{ get; set; }
publci city(String cityName, String state, String country){
this.cityName = cityName;
this.state = state;
this.country = country;
}
}