设计一个 Position 类,该类有x和y两个成员变量表示坐标。要求该类实现 Comparable <T>接口的compareTo()方法,实现比较两个Position对象到原点(0,0)的距离之差。
时间: 2024-12-11 14:24:47 浏览: 9
设计一个名为`Position`的类,用于表示二维空间中的位置,它包含两个成员变量`x`和`y`来存储坐标信息。为了满足`Comparable<T>`接口的要求,我们需要覆盖它的`compareTo()`方法,以便能够对Position对象按照它们距离原点(0,0)的差值进行排序。
```java
public class Position implements Comparable<Position> {
private double x;
private double y;
// 构造函数
public Position(double x, double y) {
this.x = x;
this.y = y;
}
// Getter and Setter methods (省略)
// 比较两个Position对象到原点的距离差
@Override
public int compareTo(Position other) {
double distanceThis = Math.sqrt(Math.pow(this.x, 2) + Math.pow(this.y, 2));
double distanceOther = Math.sqrt(Math.pow(other.x, 2) + Math.pow(other.y, 2));
return Double.compare(distanceThis - distanceOther, 0);
}
}
```
在这个实现中,我们首先计算每个Position对象相对于原点的欧几里得距离,然后通过`Double.compare()`方法比较这两个距离的差值。如果当前对象更靠近原点,则返回负数;如果更远离,返回正数;如果相等则返回0,保持自然排序顺序。
阅读全文