/**
* JSONArray按字段排序并取前n位
*
* @param jsonArr jsonArray
* @param key 需要排序的字段
* @param n 取前n位
* @param kind 排序类型,0 升序,1 降序
* @return 排序后新的JSONArray
*/
private JSONArray jsonArraySort(JSONArray jsonArr, String key, int n, int kind) {
//存放排序结果json数组
JSONArray sortedJsonArray = new JSONArray();
// 用于排序的list
List<JSONObject> list = new ArrayList<>();
//遍历待排序的json数组,并将数据放入list
for (int i = 0; i < jsonArr.size(); i++) {
list.add(jsonArr.getJSONObject(i));
}
list.sort((a, b) -> {
Integer valA1 = 0;
Integer valA2 = 0;
try {
valA1 = Integer.parseInt((String) a.get(key));
valA2 = Integer.parseInt((String) b.get(key));
} catch (JSONException e) {
log.info("排序时发生异常+\n" + e.toString());
}
// 设置排序规则
if(kind==0){
return valA1.compareTo(valA2);
}else {
return valA2.compareTo(valA1);
}
});
//将排序后结果放入结果jsonArray
if (n >= jsonArr.size()) {
n = jsonArr.size();
}
for (int i = 0; i < n; i++) {
sortedJsonArray.add(list.get(i));
}
return sortedJsonArray;
}