Comparison method violates its general contract!解决方法
时间: 2023-10-16 08:54:17 浏览: 270
2D-ARAP-and-variations-tests:CGAL Surface_mesh_deformation方法和ofxPuppet之间的比较
当出现“Comparison method violates its general contract”错误时,通常是由于比较器(Comparator)的实现不符合比较器的契约(contract)导致的。为了解决这个问题,可以尝试以下几种方法:
1. 确保比较器的实现满足比较器的契约:比较器的契约要求具有传递性、一致性和完全性。检查你的比较器实现是否满足这些要求,例如,确保比较结果在对象之间保持一致,并且不会出现相互冲突的情况。
2. 避免在比较过程中出现null值:如果比较器中存在对null值的处理逻辑,确保在比较过程中正确处理null值的情况。可以使用Comparator.nullsLast或Comparator.nullsFirst方法来处理null值,以确保它们被正确排序。
3. 检查比较对象的类型:确保比较器中对比较对象的类型进行正确处理。比较器应该只用于可以进行有效比较的对象类型。
4. 使用已经测试过的比较器实现:如果你不确定自己的比较器实现是否正确,可以考虑使用已经经过测试和验证的标准比较器实现,如Comparator.comparing方法。
通过检查以上几个方面,你可以解决“Comparison method violates its general contract”错误,并确保你的比较器实现正确无误。
阅读全文