在现有HashMap中添加元素

时间:2011-10-22 11:32:18

标签: java json algorithm parsing hashmap

下面的代码在json解析器的帮助下获取元素。我的问题是,当我找到相同的值时,我想在现有的hashmap 中添加新元素(例如“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;

}

1 个答案:

答案 0 :(得分:1)

HashMap旨在提高查找的效率,而不是查找。

听起来您可能需要双向地图 - 查看GuavaBiMap界面,可能还有HashBiMap实施。

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

目前还不完全清楚你要做什么,但我希望一个这些方法适合你。