如果城市具有相同的数组值,则以下 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/