В настоящее время у меня возникают проблемы с пониманием того, как работает метод compareTo для класса Comparable и как его переопределить. У меня есть массив пар, каждая из которых содержит 2 двойных значения, которые я пытаюсь отсортировать. Вот что я пробовал:
static class Pair implements Comparable<Pair>
{
double x;
double y;
Pair(double x, double y)
{
this.x = x;
this.y = y;
}
public double compareTo(Pair other)
{
return y - other.y;
}
}
Однако он не компилируется и вместо этого выдает эту ошибку:
Main.java:5: error: Pair is not abstract and does not override abstract method compareTo(Pair) in Comparable
static class Pair implements Comparable<Pair>
^
Main.java:14: error: compareTo(Pair) in Pair cannot implement compareTo(T) in Comparable
public double compareTo(Pair other)
^
return type double is not compatible with int
where T is a type-variable:
T extends Object declared in interface Comparable
2 errors
Это работало, когда это было с целыми числами, но не с двойными, почему это? И как я могу заставить его работать с двойниками? Спасибо.
compareTo
возвращаетint
, а не двойной. В ошибке тоже написано. - person Federico klez Culloca   schedule 20.01.2021Pair<double,double>
? - person Juan Mendes   schedule 20.01.2021Pair
в том виде, в каком он указан, не имеет параметров универсального типа; и если бы это было так,double
не был бы допустимым типом для их использования, потому что это примитивный тип. - person khelwood   schedule 20.01.2021