簡體   English   中英

比較器的比較方法來比較雙精度值

[英]Compartor's compare method to compare double values

我必須按分數對我的響應列表進行排序,但分數是雙倍值,我嘗試實現 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;
        }
    });

一個更(更)簡單的選擇是用Comparator.comparingDouble(MyResponseByScore::getScore)替換您自己的Comparator實現

這消除了自己解決邊緣情況的所有復雜性。 它使您可以輕松訪問更改順序的優雅方式,例如.reversed().thenComparing(...)等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM