如何在java中使用compareTo函数
我的问题:如何在java中使用compareTo函数,java,Java,我的问题: 假设我有四个点p1,p2,p3,p3。如何使用Pair类比较p1、p2和p2、p3对?如何使用compareTo功能?谢谢您不能使用此选项,因为您的Point类没有实现Comparable。你必须先解决这个问题。事实上,您应该将F和S约束为只实现可比较的类 要约束F和S,请将类声明更改为: public class Point{ public int x; public int y; Point(int x, int y){ this.x = x; this.
假设我有四个点p1,p2,p3,p3。如何使用Pair类比较p1、p2和p2、p3对?如何使用compareTo功能?谢谢您不能使用此选项,因为您的Point类没有实现Comparable。你必须先解决这个问题。事实上,您应该将F和S约束为只实现可比较的类 要约束F和S,请将类声明更改为:
public class Point{
public int x;
public int y;
Point(int x, int y){
this.x = x;
this.y = y;
}
public String toString(){
return "(" + x + "," + y + ")";
}
}
在编写下面的代码时,编译器会告诉您,Point必须实现Compariable
一旦这样做,您可以:
@Override
public int compareTo(Pair<F, S> that) {
int cmp = this.first.compareTo(that.first);
if (cmp == 0)
cmp = this.second.compareTo(that.second);
return cmp;
}
您不能使用它,因为您的Point类没有实现Comparable。你必须先解决这个问题。事实上,您应该将F和S约束为只实现可比较的类 要约束F和S,请将类声明更改为:
public class Point{
public int x;
public int y;
Point(int x, int y){
this.x = x;
this.y = y;
}
public String toString(){
return "(" + x + "," + y + ")";
}
}
在编写下面的代码时,编译器会告诉您,Point必须实现Compariable
一旦这样做,您可以:
@Override
public int compareTo(Pair<F, S> that) {
int cmp = this.first.compareTo(that.first);
if (cmp == 0)
cmp = this.second.compareTo(that.second);
return cmp;
}
点的可能重复与代码中的对没有关系…点的可能重复与代码中的对没有关系…建议:您应该演示如何执行约束,以帮助泛型不流利的人。@Andreas:时间紧迫,这就是为什么我发布了一个不完整的答案,但把它变成了一个社区维基,因为我没有得到任何支持。如果可以,请随时改进。谢谢建议:你应该展示如何进行约束,以帮助那些泛型不流利的人。@Andreas:我时间紧迫,这就是为什么我发布了一个不完整的答案,但将其作为一个社区wiki,因为我没有获得任何积分。如果可以,请随时改进。谢谢
Pair<Point, Point> pair1 = new Pair<>(p1, p2);
Pair<Point, Point> pair2 = new Pair<>(p3, p4);
int cmp = pair1.compareTo(pair2);