Java中的排序数组
如果我使用基于元素的条件对Java数组进行排序,会发生什么
Point[] points = new Point[10];
Arrays.sort(temp, points[0].SLOPE_ORDER);
这是一个递归调用吗
斜率是一个比较器:
public final Comparator<Point> SLOPE_ORDER = new SlopeOrder(); // YOUR DEFINITION HERE
private class SlopeOrder implements Comparator<Point>
{
public int compare(Point p1, Point p2)
{
...
}
}
# 1 楼答案
请看这里:
Arrays.sort
所以答案是:不,它不是递归的
# 2 楼答案
根据
Array#sort
的命名约定和契约判断,SLOPE_ORDER
是您正在使用的Point
类的static final
成员。具体来说,它是一个比较器,可以传递给sort
方法为了回答你的问题,没有什么有趣的事情发生
Arrays.sort(temp, points[0].SLOPE_ORDER);
将计算
points[0].SLOPE_ORDER
作为对象的引用,并使用其值作为参数来执行排序,而无需再次查看points[0]
(至少不是为了获取SLOPE_ORDER
)如果
SLOPE_ORDER
同时是static
和final
,则可以用Arrays.sort(temp, Point.SLOPE_ORDER);
结果将完全相同,代码更容易理解