В алгоритмах строчной линии я использую массив, который сортирует точки по их x-координатам, и TreeSet, который сортирует точки по их y-координатам. В настоящее время я использовал два точечных класса, чтобы указать, какой компаратор использовать (т. Е. Сравнивать ли x-координату или y-координату). Возможно ли это с одним классом точек, но двумя функциями сравнения? Для иллюстрации вот что у меня есть. Извиняюсь за непрофессиональную терминологию.
public static class Point implements Comparable<Point>{
int x; int y;
public Point(int a, int b){
this.x=a; this.y=b;
}
public int compareTo(Point other){
if(this.x<other.x)return -1;
if(this.x>other.x)return 1;
if(this.y>other.y)return 1;
return -1;
}
}
public static class Point2 implements Comparable<Point2>{
int x; int y;
public Point2(int a, int b){
this.x=a; this.y=b;
}
public int compareTo(Point2 other){
if(this.y<other.y)return -1;
if(this.y>other.y)return 1;
if(this.x>other.x)return 1;
return -1;
}
}