Java 连接两个HashMap值

Java 连接两个HashMap值,java,json,hashmap,gson,Java,Json,Hashmap,Gson,我得到了这个JSON字符串: String json=“{\'countries\\”:{\'2\':\'China\',\'3\':\'rusia\',\'4\':\'USA\',\'capitals\':{\'2\':北京,\'4\':空,\'3\':莫斯科}” 我使用以下命令将字符串转换为HashMap: HashMap<String,Object> map = new Gson().fromJson(json, new TypeToken<HashMap<S

我得到了这个JSON字符串:

String json=“{\'countries\\”:{\'2\':\'China\',\'3\':\'rusia\',\'4\':\'USA\',\'capitals\':{\'2\':北京,\'4\':空,\'3\':莫斯科}”
我使用以下命令将字符串转换为HashMap:

   HashMap<String,Object> map = new Gson().fromJson(json, new TypeToken<HashMap<String, Object>>(){}.getType());
   System.out.println(map.get("countries")+"@@@@@"+map.get("capitals"));
我想用数字连接这些值。我想创建两个ArrayList,如下所示:

A) -[中国、俄罗斯、美国]

B) -[北京、莫斯科、空]


如何操作?

首先,您需要将
map.get(“label”)
转换为
LinkedTreeMap
,然后使用其值创建新的ArrayList

        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);
String json=“{\'countries\\”:{\'2\':\'China\',\'3\':\'rusia\',\'4\':\'USA\',\'capitals\':{\'2\':北京,\'4\':空,\'3\':莫斯科}”;
HashMap map=new Gson().fromJson(json,new TypeToken(){}.getType());
ArrayList countries=新的ArrayList(map.get(“countries”).values());
System.out.println(国家);
ArrayList capitals=新的ArrayList(map.get(“capitals”).values());
System.out.println(大写);

您可以迭代国家/地区键集以填充大写字母数组:

List<String> countries = new ArrayList<>(countriesMap.values());
List<String> capitals = new ArrayList<>();

for (String countryKey : countriesMap.keySet()) {
    capitals.add(capitalsMap.get(countryKey));
}
List countries=new ArrayList(countriesMap.values());
列表大写字母=新的ArrayList();
for(字符串countryKey:countriesMap.keySet()){
capitals.add(capitalsMap.get(countryKey));
}

您尝试过什么?您是否尝试了Array.from-ing结果?谢谢您的回复,但输出为:[中国、俄罗斯、美国][北京、空、莫斯科]。我想实现:[中国,俄罗斯,美国][北京,莫斯科,null]。@MordorT.T好的,我添加了Collections.sort(),您可以再次尝试它。我得到了:尝试在null对象上调用接口方法“int java.lang.Comparable.compareTo(java.lang.Object)”reference@MordorT.T这一次我再检查一遍,再试试看,这个解决方案不够有效。您可以避免对列表进行排序。
List<String> countries = new ArrayList<>(countriesMap.values());
List<String> capitals = new ArrayList<>();

for (String countryKey : countriesMap.keySet()) {
    capitals.add(capitalsMap.get(countryKey));
}