【发布时间】:2016-06-07 04:09:39
【问题描述】:
假设已经定义了一个 Point2D 类,用于存储具有 x 和 y 坐标(均为双精度)的二维点。该类包括以下成员:
您的任务是通过添加适当的 compareTo 方法将类修改为 Comparable。点应该相对于它们与原点的距离进行比较,靠近原点的点被认为比远离原点的点“更小”。两点之间的距离定义为 x 和 y 坐标差的平方和的平方根。
我不确定当有双倍时如何实现 compareTo 方法。 对于整数和字符串,我将使用以下语法:
public int compareTo(object name) {
// comparing integers
if (this.object != other.object) {
return this.field - other.field;
} else { // comparing strings
return toString().compareTo(other.toString());
}
}
在比较两个双精度时是否有通用的实现策略,例如货币或上面的 Point 类?
【问题讨论】:
-
所以
5, 0和0, 5就compareTo()而言是“相等的”,对吧?猜测Point.compareTo()的javadoc 应该说“注意:这个类有一个与equals 不一致的自然顺序。”,正如Comparable.compareTo()的javadoc 中所建议的那样。
标签: java comparable