我在使用 Java/Processing 中使用的比较方法时遇到问题。
它说它违反了它的一般合同,我理解这意味着它不能始终如一地处理项目之间的关系......
但我不明白为什么。由于它只是根据 ycor 与 xcor 的比率(如 sin 与 cos)返回角度 theta,它不应该根据它们从 0 到 360 度的位置一致地对它们进行排序吗?
public int compareTo(Orb other) {
double X = Math.atan2(ycor,xcor);
if (Math.atan2(other.ycor,other.xcor) > X) {
return -1;
}
if (Math.atan2(other.ycor,other.xcor) == X) {
return 0;
}
return 1;
}
非常感谢任何帮助,谢谢!
具体上下文是在运行 Collection.Sort() 时发生错误。