我必须按分数对我的回答列表进行排序,
但是分数是双值,我尝试实现Comparator类的比较方法,
响应不会发生太大变化,因为double差变成了int值并最终没有对其进行排序,

有没有一种方法可以将我的比较方法用于加倍,还是有其他方法可以按分数对响应进行排序?

private List<MyResponseByScore> buildMyResponseByScore(MyreposneWithScore MyreposneWithScore) {
    return MyresposneWithScore.getAllScores().stream()
            .map(x -> new MyResponseByScore(
                    x.getAllOptions().getMayVal(),
                    (double) x.getMyScore(),
                    x.getAllOptions().getSomeVal()))
            .collect(Collectors.toList()).sort(new Comparator<MyResponseByScore>() {
        @Override
        public int compare(MyResponseByScore o1, MyResponseByScore o2) {
            if (o1.getScore() > o2.getScore()) {
                return o1.getScore() - o2.getScore();
            }
            return 0;
        }
    });

最佳答案

一个(很多)更简单的选择是将您自己的Comparator实现替换为Comparator.comparingDouble(MyResponseByScore::getScore)

这消除了自己计算边缘案例的所有复杂性。而且,您可以轻松访问更改顺序的优雅方式,例如.reversed().thenComparing(...)等。

关于java - 比较器的比较方法比较 double 值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60822405/

10-17 00:48