【问题标题】:One Key and Multiple Values in Java from Complex ListJava中的一个键和多个值来自复杂列表
【发布时间】:2018-03-06 19:48:05
【问题描述】:

我有一个以下格式的 json 数组列表,顺序相同。我不能指望排序中的数据,它可能会有所不同,Company-x 可能会以任何顺序出现。

Company-1 - {Branch-1, Branch-4, Branch-8}
Company-2 - {Branch-9, Branch-11, Branch-22}
Company-4 - {Branch-45, Branch-64, Branch-18}
Company-1 - {Branch-10, Branch-43, Branch-82}
Company-2 - {Branch-15, Branch-44, Branch-86}

此外,这可能会增加超过 10,000 行。我需要在不影响性能的情况下制作一个键值对。我需要将上述数据存储在 HashMap 中。 (地图)。

例如我需要如下格式的结果:

  [Company-1,{Branch-1, Branch-4, Branch-8,Branch-10, Branch-43, Branch-82}]
    [Company-2,{Branch-9, Branch-11, Branch-22,Branch-15, Branch-44, Branch-86}]
    [Company-4,{Branch-45, Branch-64, Branch-18}]
....etc.

如何在java中实现这一点?

这里是json格式。键是 CID,值是(Branch_ID 和名称)

[
            {

                "CID": "4545",
                "BRANCH_ID": "0041",
                "Name": "BID41",


            },
            {

                "ID": "4546",
                "BRANCH_ID": "0051",
                "Name": "BID51",


            },
            {

                "ID": "4545",
                "BRANCH_ID": "0042",
                "Name": "BID42",


            },
            {

                "ID": "4546",
                "BRANCH_ID": "0052",
                "Name": "BID52",


            },
            {

                "ID": "4545",
                "BRANCH_ID": "0043",
                "Name": "BID43",


            },
            {

                "ID": "4545",
                "BRANCH_ID": "0053",
                "Name": "BID53",


            }
        ]

【问题讨论】:

  • “不影响性能”是什么意思?
  • 您编写了哪些代码来尝试解决您的问题?您使用的是什么 JSON 解析工具?您粘贴的示例不是有效的 JSON,那么您的实际 JSON 是什么样的?您已经拥有哪些数据结构/POJO?您提供给我们的信息不足以帮助您。
  • 我正在尝试实现 for 循环,但对将值推送到 Map 中的现有键感到困惑。我也没有 JSON 的问题,它只是一个有效的 JSON。
  • @teolandon ,我期待大量数据。因此在转换为 Map 时不应该花费更多时间进行迭代。
  • 调用 myHashmap.get(existingKey).add(newBranch),如果键已经存在,则使用存储的值并简单地追加到现有集合。

标签: java performance hashmap key-value-observing linkedhashmap


【解决方案1】:

如果您尝试将 Json 数据转换为 Map ,解决方法如下:

  public Map<String , List<String>> convertMapList(String jsonStr) {
    Type mapType = new TypeToken<Map<String, Map>>(){}.getType();  
   Map<String, List<String>> son = new Gson().fromJson(jsonStr, mapType);
        return son;
    }   

为此,您必须在项目中添加 Gson 库

【讨论】:

  • 谢谢。但我需要从 json 结果的特定值中生成密钥。所以我不能用这个。
  • 请提供你的演示Json
猜你喜欢
  • 1970-01-01
  • 2020-07-24
  • 2017-01-10
  • 2012-12-19
  • 2015-02-12
  • 2014-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多