I have a map of maps as follows:- myMap = {cfds2={fname=ck1, uname=jk1, tenant=ABC1}, cfds1={fname=ck, uname=jk, tenant=ABC}}
and expecting a returned map as :- {tenant={fname=ck, handler=cfds1, uname=jk, tenant=ABC}}
when getIoiProperties(String tenant) is being called with ABC.
So Create a new map by using one of the key of the inner map to be key of a newly created map and key of the outer map becomes one of the values.
import com.google.common.collect.Maps;
import java.util.Map;
public class MapTest
{
public Map<String, Map<String, String>> getIoiProperties(String tenant)
{
Map<String, String> tenantMap = Maps.newHashMap();
tenantMap.put("tenant", "ABC");
tenantMap.put("uname", "jk");
tenantMap.put("fname", "ck");
//Map of Maps
Map<String, Map<String, String>> myMap = Maps.newHashMap();
myMap.put("cfds1", tenantMap);
Map<String, String> tenantMap1 = Maps.newHashMap();
tenantMap1.put("tenant", "ABC1");
tenantMap1.put("uname", "jk1");
tenantMap1.put("fname", "ck1");
myMap.put("cfds2", tenantMap1);
System.out.println("myMap = " + myMap);
Map<String, Map<String, String>> result = Maps.newHashMap();
//iterate map
for (Map.Entry<String, Map<String, String>> entry : myMap.entrySet()) {
String key = entry.getKey();
for (Map.Entry<String, String> entry1 : entry.getValue().entrySet())
if (entry1.getKey().equals("tenant") && entry1.getValue().equals(tenant)) {
entry.getValue().put("handler", key);
result.put(entry1.getKey(), entry.getValue());
}
}
System.out.println(result);
System.out.println("myMap = " + myMap);
return result;
}
public static void main(String[] args) {
MapTest mp = new MapTest();
Map<String, Map<String, String>> res = mp.getIoiProperties("ABC");
System.out.println(res.get("tenant"));
}
}