gpt4 book ai didi

java - 不明白为什么我会收到 "Comparison method violates its general contract"错误

转载 作者:行者123 更新时间:2023-12-04 04:30:20 25 4
gpt4 key购买 nike

Comparison method violates its general contract

我按评分排序,评分是 double。谁能看出我为什么会收到此错误?

Collections.sort(productsMasterList, new Comparator<Product>() {
@Override
public int compare(Product o1, Product o2) {
final double rating1 = o1.getRating();
final double rating2 = o2.getRating();
boolean realisticRating1 = rating1 < 4.8;
boolean realisticRating2 = rating2 < 4.8;
return rating1 > rating2 && realisticRating1 ? -1 : rating2 > rating1 && realisticRating2 ? 1 : 0;
}
});

编辑:这不是重复的,因为它对我来说非常具体。我已经看到了其他答案,但我仍然无法弄清楚为什么会出现此错误,我的代码似乎应该可以正常工作

最佳答案

考虑这三个评级:

1
3
5 // unrealistic

根据您的比较器,不切实际的评级与所有其他评级相比;所以即使 1 和 3 彼此不等价,它们都等价于 5。所以你的比较器没有实现 transitive 关系,所以你的比较器的客户端无法获得一致的结果;一切都变得不稳定。

关于java - 不明白为什么我会收到 "Comparison method violates its general contract"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34296426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com