Connect two HashMap Values

Tags: , , ,



I’ve got this JSON string:

String json = "{"countries":{"2":"China","3":"Russia ","4":"USA"},"capitals":{"2":Beijing,"4":null,"3":Moscow}}"; I converted string to HashMap, using this:

   HashMap<String,Object> map = new Gson().fromJson(json, new TypeToken<HashMap<String, Object>>(){}.getType());
   System.out.println(map.get("countries")+"@@@@@"+map.get("capitals"));

And now my output is:

{2=China, 3=Russia , 4=USA}@@@@@{2=Beijing, 4=null, 3=Moscow}

I would like to connect this values by numbers. I want to create two ArrayList like this:

A)- [China,Russia,USA]

B)- [Beijing,Moscow,null]

How can i do it?

Answer

First, you need to cast map.get("label") to LinkedTreeMap<Integer, String>, then create new ArrayList with it’s values

        String json = "{"countries":{"2":"China","3":"Russia ","4":"USA"},"capitals":{"2":Beijing,"4":null,"3":Moscow}}";
        HashMap<String,TreeMap<Integer, String>> map = new Gson().fromJson(json, new TypeToken<HashMap<String, TreeMap<Integer, String>>>(){}.getType());
        ArrayList<String> countries = new ArrayList<>(map.get("countries").values());
        System.out.println(countries);

        ArrayList<String> capitals = new ArrayList<>(map.get("capitals").values());
        System.out.println(capitals);


Source: stackoverflow