java取出数据进行比较


JSONArray objects=new JSONArray();
            Object o = redisUtil.get(key);
            objects = JSON.parseArray(o.toString());

img

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]),表示如果圈数相同,比较数组中的第二个元素(即时间成绩)。最终的比较器会先按照圈数排序,如果圈数相同再按照时间成绩排序。