【问题标题】:Add an element in an existing HashMap在现有 HashMap 中添加元素
【发布时间】:2011-12-13 03:18:12
【问题描述】:

以下代码在 json 解析器的帮助下获取元素。我的问题是,当我找到 same value 时,我想在 existing hashmap 中放置一个 new element(例如“title2”)一样的价值! 我的第一个想法是在第一个循环之后创建一个新循环(for...)并在此处执行一些操作,但这很难。我找不到有效的方法。 有解决方案吗?有什么想法吗?

JSONObject json = JSONfunctions.getJSONfromURL(URL);
try {
    //Get the elements
    HashMap<Integer, String> mapCompare = new HashMap<Integer, String>();
    JSONArray data = json.getJSONArray("data");
    //Loop the array
    for (int i = 0; i < data.length(); i++) {
        HashMap<String, String> mapInfo = new HashMap<String, String>();
        JSONObject e = data.getJSONObject(i);
        mapInfo.put("id", e.getString("id"));
        mapInfo.put("title", e.getString("title"));
        mapInfo.put("value", e.getString("value"));
        if (mapCompare.containsValue(e.getString("value")) {
            mapInfo.put("isSame?", "yes");
        } else {
            mapInfo.put("isSame?", "no");
        }
        mapCompare.put(i, e.getString("value"));
        listInfo.add(mapInfo);
    }
  // a new for ??? and how ??? 
} catch (JSONException e) {
    Log.e("log_tag", "Error parsing data " + e.toString());
}
return listInfo;

}

【问题讨论】:

    标签: java json algorithm parsing hashmap


    【解决方案1】:

    HashMap 旨在高效地进行 key 查找,而不是 value 查找。

    听起来您可能想要一个双向映射 - 看看 GuavaBiMap 接口,可能还有 HashBiMap 实现。

    或者,您可以使用Multimap,其中每个键都可以映射到多个值 - 这样您就有一个value 条目,其中包含您为该键添加的所有值。

    尚不完全清楚您要做什么,但我希望这些方法中的一种对您有用。

    【讨论】:

    • 考虑有 10 个 json 数组。每个数组都有一个值和一个标题。我用解析器获取这些数组。因此,对于每个数组,我使用两个键“值”和“标题”制作一个哈希图。然后考虑 10 个 json 数组中的 2 个具有相同的值(例如 X)但标题不同。所以我想要一个值为“X”的哈希图,并且有两个标题,因此有一个新的键“title2”。对于这个例子,最终结果是 9 hashmap。我希望你能理解我的问题! :) 无论如何,我看到您的回答可能对我有帮助!这些地图有很多功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 2017-11-30
    • 2023-03-28
    • 2014-05-01
    相关资源
    最近更新 更多