[英]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.