Java中的点排序数组
我有一个课堂“要点”。我想对一个点数组进行排序,但我想使用2个“比较”函数(我想取2个数组,一个按X排序,另一个按Y排序)。 如何使我的类接受2个比较函数?这是我的密码Java中的点排序数组,java,sorting,Java,Sorting,我有一个课堂“要点”。我想对一个点数组进行排序,但我想使用2个“比较”函数(我想取2个数组,一个按X排序,另一个按Y排序)。 如何使我的类接受2个比较函数?这是我的密码 static class Point implements Comparator<Point>{ int x,y; int compareX(Point A , Point B){ return A.x - B.x; } int compareY(Point A , P
static class Point implements Comparator<Point>{
int x,y;
int compareX(Point A , Point B){
return A.x - B.x;
}
int compareY(Point A , Point B){
return A.y - B.y;
}
}
静态类点实现比较器{
int x,y;
int compareX(点A、点B){
返回A.x-B.x;
}
int比较(点A、点B){
返回A.y-B.y;
}
}
没有点
实现比较器
,而是有2个比较器
常数,分别通过x和y进行比较
static class Point {
public static final Comparator<Point> X_COMPARATOR = Comparator.comparingInt(Point::getX);
public static final Comparator<Point> Y_COMPARATOR = Comparator.comparingInt(Point::getY);
}
静态类点{
公共静态最终比较器X_Comparator=Comparator.comparingInt(点::getX);
公共静态最终比较器Y_Comparator=Comparator.comparingInt(点::getY);
}
没有点
实现比较器
,而是有2个比较器
常数,分别通过x和y进行比较
static class Point {
public static final Comparator<Point> X_COMPARATOR = Comparator.comparingInt(Point::getX);
public static final Comparator<Point> Y_COMPARATOR = Comparator.comparingInt(Point::getY);
}
静态类点{
公共静态最终比较器X_Comparator=Comparator.comparingInt(点::getX);
公共静态最终比较器Y_Comparator=Comparator.comparingInt(点::getY);
}
难道您还没有两个比较函数吗?问题是我需要实现将在数组中使用的“比较”函数。sort(myArray)难道您还没有两个比较函数吗?问题是我需要实现将在数组中使用的“比较”函数。sort(myArray)我不确定该如何使用这个比较器。这不起作用:公共点sortByX(){return array.sort(This,X_COMPARATOR);}@epanicafratePoint
不是数组<代码>数组。排序将对象[]
作为第一个参数。我是说集合。排序,不是数组。排序,我的错。但是它仍然不起作用。Collections.sort
将集合
作为第一个参数,而不是点
。您得到的确切错误是什么。@epanicafrate错误消息显示S
属于Cmap.Point[]
类型。所以它不是一个集合,而是一个数组。所以你应该使用数组。所以我不确定我应该如何使用这个比较器。这不起作用:公共点sortByX(){return array.sort(This,X_COMPARATOR);}@epanicafratePoint
不是数组<代码>数组。排序将对象[]
作为第一个参数。我是说集合。排序,不是数组。排序,我的错。但是它仍然不起作用。Collections.sort
将集合
作为第一个参数,而不是点
。您得到的确切错误是什么。@epanicafrate错误消息显示S
属于Cmap.Point[]
类型。所以它不是一个集合,而是一个数组。所以应该使用Arrays.sort