Как сложить json значение после сортировки в java android? - PullRequest
0 голосов
/ 26 января 2020

После Json необходимо сгруппировать по городам, чтобы получить массив вместе с количеством, если у города одинаковое значение массива. после этого я хочу отсортировать 2 самых больших, а остальные сложить вместе, но как это сделать?

{
"data": [
        {
            "ID": 47,
            "city": "Jakarta"
        },
        {
            "ID": 48,
            "city": "Bogor"
        },
        {
           "ID": 49,
            "city": "Bogor"
        },
        {
            "ID": 50,
            "city": "Jakarta"
        },
        {
            "ID": 51,
            "city": "Jakarta"
        },
        {
            "ID": 52,
            "city": "Bali"
        },
        {
            "ID": 50,
            "city": "Lampung"
        }
    ]
}

, и я до сих пор пробовал группировать по городам, чтобы получить массив

try {
        JSONObject jsonObject = new JSONObject(result);
        HashMap<String,Integer> hashMap = new HashMap<>();
        for (int i=0;i<jsonObject.getJSONArray("data").length();i++){
            JSONObject innerJsonObject = jsonObject.getJSONArray("data").getJSONObject(i);
            String key = innerJsonObject.getString("city");
            if(hashMap.containsKey(key)){
                int count = hashMap.get(key)+1;
                hashMap.put(key,count);
            }else {
                hashMap.put(key,1);
            }
        }
        Log.e("Hashmap---",hashMap.toString());
    } catch (JSONException e) {
        e.printStackTrace();
    }

и результат:

  • Богор = 2
  • Джакарта = 3
  • Бали = 1
  • Лампунг = 1

ожидаемый результат:

  • Джакарта = 3

  • Богор = 2

  • Другой город = 2

1 Ответ

0 голосов
/ 26 января 2020

Попробуйте добавить этот HashMap в TreeMap после для l oop, как это

     Map<String, Integer> reverseSortedMap = new TreeMap<String, 
        Integer>(Collections.reverseOrder());

      reverseSortedMap.putAll(hashMap);//your hashMap with count of city

      System.out.println("Reverse Sorted Map   : " + reverseSortedMap);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...