Добавить элемент в существующую HashMap - PullRequest
0 голосов
/ 22 октября 2011

Следующий код принимает элементы с помощью парсера json. Моя проблема в том, что когда я нахожу то же значение , то я хочу поместить новый элемент (например, "title2") в существующий хэш-файл с тем же значением ! Моя первая мысль - создать новый цикл (для ...) после первого цикла и выполнить некоторые действия здесь, но это сложно. Я не могу найти эффективный способ. Есть ли решение для этого? Есть идеи?

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 Ответ

1 голос
/ 22 октября 2011

HashMap разработан, чтобы быть эффективным для поиска ключей , а не значения поисков.

Звучит так, как если бы вы могли хотеть двунаправленную карту - посмотритев интерфейсе Guava BiMap и, возможно, реализации HashBiMap.

В качестве альтернативы можно использовать Multimap, где каждый ключ может отображаться на несколько значений - поэтому у вас будет одна запись для value, которая будет содержать все значения, которые вы добавили для этого ключа.

Это не совсемЯсно, что вы пытаетесь сделать, но я бы ожидал, что один из этих подходов будет работать для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...