【问题标题】:Connect two HashMap Values连接两个 HashMap 值
【发布时间】:2021-02-11 18:34:33
【问题描述】:

我有这个 JSON 字符串:

String json = "{\"countries\":{\"2\":\"China\",\"3\":\"Russia \",\"4\":\"USA\"},\"capitals\":{\"2\":Beijing,\"4\":null,\"3\":Moscow}}"; 我使用以下方法将字符串转换为 HashMap:

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

现在我的输出是:

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

我想用数字连接这些值。我想像这样创建两个 ArrayList:

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

B)- [北京,莫斯科,null]

我该怎么做?

【问题讨论】:

  • 你试过什么?您是否尝试过 Array.from-ing 结果?

标签: java json hashmap gson


【解决方案1】:

首先,您需要将map.get("label") 转换为LinkedTreeMap&lt;Integer, String&gt;,然后使用它的值创建新的 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);

【讨论】:

  • 感谢您的回复,但输出为:[China, Russia , USA] [Beijing, null, Moscow]。我想实现:[China, Russia , USA] [Beijing, Moscow, null]。
  • @MordorT.T 好的,我添加了 Collections.sort(),你可以再试一次
  • 我得到:尝试在空对象引用上调用接口方法“int java.lang.Comparable.compareTo(java.lang.Object)”
  • @MordorT.T 这次我仔细检查一下,再试一次
  • 其实这个方案效率不够。您可以避免对列表进行排序。
【解决方案2】:

您可以遍历国家/地区键集以填充大写数组:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多