JAVA 通过LIst对JsonArrary进行排序
1.Collections.sort
参考代码
//示例数据, string转JSONArray
String jsonArrStr = "[ { \"ID\": \"135\", \"Name\": \"Fargo Chan\", \"Value\": \"147.52\" },{ \"ID\": \"432\", \"Name\": \"Aaron Luke\" , \"Value\": \"311.44\" },{ \"ID\": \"252\", \"Name\": \"Dilip Singh\", \"Value\": \"22.12\" }]";
JSONArray jsonArr = new JSONArray(jsonArrStr);
JSONArray sortedJsonArray = new JSONArray(); //定义排序后的JSONArray
//这里是对JSONArray 进行比较排序,其中就是JSONObject. 同样也可以是其他基本类型或者类;
List<JSONObject> jsonValues = new ArrayList<JSONObject>();
for (int i = 0; i < jsonArr.length(); i++) {
jsonValues.add(jsonArr.getJSONObject(i));
}
Collections.sort( jsonValues, new Comparator<JSONObject>() {
//指定key
private static final String KEY_NAME = "Name";
@Override
public int compare(JSONObject a, JSONObject b) {
String valA = new String();
String valB = new String();
try {
//取比较值
valA = (String) a.get(KEY_NAME);
valB = (String) b.get(KEY_NAME);
}
catch (JSONException e) {
//do something
}
return valA.compareTo(valB); //升序
//return -valA.compareTo(valB); //加一个 - 表示降序
}
});
for (int i = 0; i < jsonArr.length(); i++) {
sortedJsonArray.put(jsonValues.get(i));
}
2.list.sort(new Comparator() {})
参考代码
jsonValues.sort(new Comparator<JSONObject>() {
public int compare(JSONObject o1, JSONObject o2) {
String KEY_NAME = "Value";
Double valA = 0.0;
Double valB = 0.0;
valA = Double.parseDouble(o1.get(KEY_NAME)+"");
valB = Double.parseDouble(o2.get(KEY_NAME)+"");
return -valA.compareTo(valB);
}
});