【问题标题】:Compartor's compare method to compare double valuesCompartor 的 compare 方法比较 double 值
【发布时间】:2020-07-04 10:31:13
【问题描述】:

我必须按分数对我的回复列表进行排序, 但是分数是双倍值,我尝试实现 Comparator 类的比较方法, 响应没有太大变化,因为双差变为 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;
        }
    });

【问题讨论】:

标签: java sorting compare comparator


【解决方案1】:

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

这消除了自己解决边缘情况的所有复杂性。它使您可以轻松访问更改排序的优雅方式,例如.reversed().thenComparing(...) 等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-14
    • 2017-05-30
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 2018-11-30
    相关资源
    最近更新 更多