我必须按分数对我的回答列表进行排序,
但是分数是双值,我尝试实现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/