映射以保存多组键和值

时间:2017-07-23 18:37:34

标签: hashmap

我有一个map1,其中包含信息     [40256942,6] [60246792,5]

现在我想准备一个包含

等信息的map2
itemNo, 40256942
qty, 6


itemNo, 60246792
qty, 5

准备最终信息为json

“partialArticlesInfo”: [{itemNo:”40256942”, availQty:”6”}, {itemNo:”60246792”, availQty:”5”}]

我正在尝试迭代map1以检索值并针对该键设置该值。但我只得到一个最后一个条目。有没有办法,我得到了新的地图,其中包含如上所述的条目

Map<String, String> partialArticlesInfo = new HashMap<String,String>();
Map<String, String> partialArticlesTempMap = null;
for (Map.Entry<String,String> entry : partialStockArticlesQtyMap.entrySet())
{
    partialArticlesTempMap = new HashMap<String,String>();
    partialArticlesTempMap.put("itemNo",entry.getKey());
    partialArticlesTempMap.put("availQty",entry.getValue());
    partialArticlesInfo.putAll(partialArticlesTempMap);
}

2 个答案:

答案 0 :(得分:0)

在Java中(我假设您正在使用Java,将来指定它会很有帮助)和我所知道的其他语言,映射包含键和值之间的映射。每个密钥只允许一个映射。在“map2”中,键是“itemNo”和“availQty”。所以发生的事情是你的for循环设置第一个条目的值,然后用第二个条目中的数据覆盖它们,这就是为什么这是你看到的唯一一个。请查看Java - MapMap - Java 8了解详情。

我不明白为什么你要把数据放到地图上,你可以直接把它放到JSON中,如下所示:

JSONArray partialArticlesInfo = new JSONArray();

for (Map.Entry<String,String> entry : partialStockArticlesQtyMap.entrySet()) {
    JSONObject stockEntry = new JSONObject();
    stockEntry.put("itemNo", entry.getKey());
    stockEntry.put("availQty", entry.getValue());

    partialArticlesInfo.put(stockEntry);
}

JSONObject root = new JSONObject();
root.put("partialArticlesInfo",partialArticlesInfo);

这将采用“map1”(代码中的partialStockArticlesQtyMap)并创建一个与您的示例完全相同的JSON对象 - 无需将map2作为中间步骤。它遍历map1中的每个条目,创建一个表示它的JSON对象并将其添加到JSON数组,最后将其作为“partialArticlesInfo”添加到根JSON对象。

具体代码可能略有不同,具体取决于您使用的JSON库 - 请查看详细信息的文档。

答案 1 :(得分:0)

我同意布兰登的观点。另一种解决方案是存储在Set或List对象中,如下所示。

class Item {
    Long itemNo;
    int quantity;

      public int hashCode() {
        Long.hashCode(itemNo) + Integer.hashCode(quantity);
      }

      public int equals(Object other) {
        other instanceOf Item && other.itemNo == this.itemNo && other.quantity = this.quantity;
      }
    }
}

然后你可以使用他描述的JsonArray方法来获取输出中的Json字符串

这意味着向对象添加新变量不需要更多努力来生成Json

相关问题