Hashmap JSON сумма одного и того же ключа - PullRequest
0 голосов
/ 12 ноября 2018

Добрый день, я просматривал почти все посты о том, как суммировать значения HashMaps, использующих один и тот же ключ, большинство, если не все, ссылаются на два хэш-карты и затем объединяются.

Что мне нужно сделать, это следующее: У меня есть HashMap, который я заполнил из ответа JSON, и данные в хэш-карте выглядят следующим образом:

String Key: House1
String Value: 500
String Key: House1
String Value: 5000
String Key: House2
String Value: 200
String Key: House1
String Value: 500
String Key: House2
String Value: 500

Я хочу заполнить список, чтобы в нем отображалась только сумма всех значений, поэтому в приведенном выше примере список должен иметь только следующее:

String Key: House1
String Value: 6000
String Key: House2
String Value: 700

Когда я заполняю ListView, я вижу, что все данные правильно заполнены в Hashmap.

Любая помощь с этим запросом будет оценена.

Спасибо, С уважением

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Карта не позволяет использовать те же ключи. Но вы можете сделать что-то вроде этого ..

Это решит вашу проблему

private void calc(HashMap<String, Integer> map, String key, Integer value) {
    if (map.containsKey(key)) { //Key already exist in Hashmap

        Integer val = map.get(key); // get the value of key
        val = val + value; // adding new value and old value
        map.put(key, val); //Storing sum of values
    }else {
        map.put(key, value);
    }

Я передаю Hashmap, ключ и значение этой функции, затем проверяю в Hashmap, существует ли этот ключ или нет. если он существует, я получаю его значение и добавляю в него новое значение, поэтому в конце вы получаете сумму

0 голосов
/ 12 ноября 2018

Hashmap не позволяет использовать несколько значений для одного ключа. Hashmap перезаписывает этот ключ, если есть такой же ключ, как показано ниже.

map.put("House1","500");
map.put("House1","5000");

выход

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