java - 如何在java android中排序后对json值求和?

标签 java android arrays json sorting

如果城市具有相同的数组值,则以下 Json 需要按城市分组以获取数组和计数。之后我想对最大的两个进行排序,其余的加在一起,但该怎么做?

{
"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
  • Jakarta = 3
  • 巴厘岛 = 1
  • 楠榜 = 1

预期结果是:

  • Jakarta = 3

  • 茂物 = 2

  • 另一个城市 = 2

最佳答案

尝试在 for 循环之后将 HashMap 添加到 TreeMap 中,如下所示

     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);

关于java - 如何在java android中排序后对json值求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59915380/

相关文章:

java - 强制只读 Apache POI 中的第一张表

java - 当比较基于我自己的方法的结果时,我可以使用 Comparator.comparing() 定义一个新的比较器吗?

java - 这个程序的效率如何?

c - 无法从 C 中的数组中打印出值

c# - 字节数组到位图图像

java - 使用 java Collections.sort() 对 List<List<Integer>> 进行排序

android - 如何将多个 C++ cmake 项目链接到 Android Studio/gradle 项目?

Android:在 Activity 上设置背景颜色和半透明背景图像

android - 如何从 FragmentManager 中删除之前的返回堆栈条目?

java - 如何在hashmap中首先迭代最大的键字符串值