可以使用Java 8的Stream流来处理同分数排序的问题。首先,我们可以将输入的分数存储在一个List中,然后使用Stream的distinct()方法去除重复的分数,再使用sorted()方法对分数进行排序,最后使用mapToInt()方法将分数转换为对应的排名。

下面是一个示例代码:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<Integer> scores = Arrays.asList(100, 100, 90);
        
        List<Integer> ranks = scores.stream()
                .distinct()
                .sorted((a, b) -> Integer.compare(b, a))
                .mapToInt(score -> scores.indexOf(score) + 1)
                .boxed()
                .collect(Collectors.toList());
        
        System.out.println(ranks);
    }
}

输出结果为:[1, 1, 3],即分数为100的排名为1,分数为90的排名为3。

在代码中,首先使用distinct()方法去除重复的分数,然后使用sorted()方法对分数进行排序,其中使用了一个自定义的比较器来实现降序排序。接着使用mapToInt()方法将分数转换为对应的排名,其中使用了indexOf()方法来获取分数在原始列表中的索引位置,并加1表示排名。最后使用boxed()方法将IntStream转换为Stream,再使用collect(Collectors.toList())方法将结果收集为一个List。

java8 处理同分数排序例如 输入10010090输出:113使用stream流处理

原文地址: https://www.cveoy.top/t/topic/jb7Q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录