第一种
Random random = new Random();
JSONArray result = new JSONArray();
for(int i = 0 ; i < 10 ; i++){
JSONObject obj = new JSONObject();
obj.put("value",random.nextInt(10));
result.add(obj);
}
System.out.println("排序前: " + result.toJSONString());
result.sort(Comparator.comparing(obj -> {
Integer value = ((JSONObject) obj).getIntValue("value");
return value;
}));
System.out.println("排序后(升序) : " + result.toJSONString());
result.sort(Comparator.comparing(obj -> {
Integer value = ((JSONObject) obj).getIntValue("value");
return value;
}).reversed());
System.out.println("排序后(降序) : " + result.toJSONString());
输出结果:
排序前: [{"value":1},{"value":3},{"value":9},{"value":9},{"value":9},{"value":6},{"value":0},{"value":5},{"value":7},{"value":2}]
排序后(升序) : [{"value":0},{"value":1},{"value":2},{"value":3},{"value":5},{"value":6},{"value":7},{"value":9},{"value":9},{"value":9}]
排序后(降序) : [{"value":9},{"value":9},{"value":9},{"value":7},{"value":6},{"value":5},{"value":3},{"value":2},{"value":1},{"value":0}]
第二种
也可以自定义比较器
public class ValueComparator implements Comparator<JSONObject> {
@Override
public int compare(JSONObject o1, JSONObject o2) {
Integer value1 = o1.getIntValue("value");
Integer value2 = o2.getIntValue("value");
return value1 - value2;
}
Random random = new Random();
JSONArray result = new JSONArray();
for(int i = 0 ; i < 10 ; i++){
JSONObject obj = new JSONObject();
obj.put("value",random.nextInt(10));
result.add(obj);
}
System.out.println("排序前: " + result.toJSONString());
// result.sort(Comparator.comparing(obj -> {
// Integer value = ((JSONObject) obj).getIntValue("value");
// return value;
// }));
List<JSONObject> list = new ArrayList<JSONObject>();
for(int i = 0 ; i < result.size() ; i++){
list.add((JSONObject) result.get(i));
}
Collections.sort(list,new ValueComparator());
//重新装回JSONArray
result.clear();
for (JSONObject jsonObject : list) {
result.add(jsonObject);
}
System.out.println("排序后(升序) : " + result.toJSONString());
// result.sort(Comparator.comparing(obj -> {
Integer value = ((JSONObject) obj).getIntValue("value");
return value;
}).reversed());
System.out.println("排序后(降序) : " + result.toJSONString());
输出结果
排序前: [{"value":1},{"value":1},{"value":9},{"value":0},{"value":6},{"value":5},{"value":1},{"value":7},{"value":3},{"value":2}]
排序后(升序) : [{"value":0},{"value":1},{"value":1},{"value":1},{"value":2},{"value":3},{"value":5},{"value":6},{"value":7},{"value":9}]
排序后(降序) : [{"value":0},{"value":1},{"value":1},{"value":1},{"value":2},{"value":3},{"value":5},{"value":6},{"value":7},{"value":9}]
第二种只会根据你定义的比较器的规则来,如果又需要降序则需要另外定义规则,如果只是简单的排序规则,我推荐第一种