已有的Java Pair类存在问题

时间:2018-09-12 23:39:02

标签: java

我正处于时间紧缩状态,却找不到适合该问题的答案。

> Assignment(Generic Class Pair)编写一个泛型类Pair,它具有两个类型参数-F和S-每个参数分别表示该对中第一个和第二个元素的类型。为该对的第一个和第二个元素添加get和set方法。

其他要求: -默认构造函数
-两个参数的构造函数,用于初始化“第一”和“第二”的数据
-用于显示“第一”和“第二”数据元素的“ toString”方法
-创建一个“比较器”(即,创建实现该接口的类的实例,并且必须重写“比较”和“等于”方法)

-应用程序必须创建5对对象的ArrayList,然后根据compare方法以最大到最小的顺序显示内容。
-该类仅支持扩展Number的类型。
-假设“对”对象包含(x,y)坐标,因此计算与(0,0)坐标的距离以确定排序顺序(即,从(0,0)到最小距离到最大距离的升序

因此,以下是我到目前为止的内容。 我迷上了距离计算,因为它是默认构造函数,所以会抛出错误吗(一旦输入“ Number”类型,它将按需运行?) 另外,我不确定如何处理ArrayList的创建以及如何基于与(0,0)的距离显示排序后的数组。从逻辑角度大声思考距离计算是没有意义的,因为它与(0,0)之间的距离.....这与原始(x,y)坐标相同,因此似乎只添加了一些额外的内容复杂的步骤只是为了使初始ArrayList的排序升序。

public class Pair<F, S> {
//default constructor
private F first; //first member of pair
private S second; //second member of pair
public static final Pair origin = new Pair(0,0);

//two argument constructor
public Pair(F first, S second) {
    this.first = first;
    this.second = second;
}

public void setFirst(F first) {
    this.first = first;
}

public void setSecond(S second) {
    this.second = second;
}

public F getFirst() {
    return first;
}

public S getSecond() {
    return second;
}

@Override
public String toString(){
    return "("+ this.first + ", "+ this.second + ")";
}
 public float distanceTo(Pair other) {
    float Fchg = other.getFirst() - this.getFirst();
    float Schg = other.getSecond() - this.getSecond();
    return Math.sqrt(Fchg * Fchg + Schg * Schg);
}

}

更新代码

public abstract class Pair <F, S> extends Number {
//default constructor
private F first; //first member of pair
private S second; //second member of pair  

//two argument constructor
public Pair(F first, S second) {
    this.first = first;
    this.second = second;
}

public void setFirst(F first) {
    this.first = first;
}

public void setSecond(S second) {
    this.second = second;
}

public F getFirst() {
    return first;
}

public S getSecond() {
    return second;
}

@Override
public String toString(){
    return "("+ this.first + ", "+ this.second + ")";
}

public double distanceTo(Pair other) {
    double firstChange = other.getFirst() - this.getFirst();
    double secondChange = other.getSecond() - this.getSecond();
    return Math.sqrt(firstChange * firstChange + secondChange * secondChange);
}
}

0 个答案:

没有答案