JSONArray objects=new JSONArray();
Object o = redisUtil.get(key);
objects = JSON.parseArray(o.toString());
objects里有两个数据,一个是圈数,一个是时间成绩。先比较圈数谁小谁在前,如果圈数相同再比较时间,时间短的再前。这种应该怎么取出来进行比较?Comparator.comparing
使用Comparator.comparing方法来构造一个比较器,实现先按照圈数排序,如果圈数相同再按照时间排序。具体代码如下:
import java.util.*;
public class Example {
public static void main(String[] args) {
List<Object[]> objects = new ArrayList<>();
// 假设 objects 中包含了需要排序的数据
// 每个元素是一个 Object[],包含两个元素,第一个元素是圈数,第二个元素是时间成绩
// 对 objects 进行排序
Collections.sort(objects, Comparator.comparing((Object[] obj) -> (Integer) obj[0])
.thenComparing(obj -> (Double) obj[1]));
// 排序后的结果存储在 objects 中,可以进行后续处理
}
}
Comparator.comparing方法传入一个函数,这个函数的返回值是需要比较的属性。
传入的函数为(Object[] obj) -> (Integer) obj[0],表示比较数组中的第一个元素(即圈数)。
然后使用.thenComparing方法,传入另一个函数(obj -> (Double) obj[1]),表示如果圈数相同,比较数组中的第二个元素(即时间成绩)。最终的比较器会先按照圈数排序,如果圈数相同再按照时间成绩排序。