假设你有一个名为Point
像这样的类:
class Point {
double latitude;
double longitude;
}
比较器可以实现如下:
class DistanceFromMeComparator implements Comparator<Point> {
Point me;
public DistanceFromMeComparator(Point me) {
this.me = me;
}
private Double distanceFromMe(Point p) {
double theta = p.longitude - me.longitude;
double dist = Math.sin(deg2rad(p.latitude)) * Math.sin(deg2rad(me.latitude))
+ Math.cos(deg2rad(p.latitude)) * Math.cos(deg2rad(me.latitude))
* Math.cos(deg2rad(theta));
dist = Math.acos(dist);
dist = rad2deg(dist);
return dist;
}
private double deg2rad(double deg) { return (deg * Math.PI/180.0); }
private double rad2deg(double rad) { return (rad * 180.0/Math.PI); }
@Override
public int compare(Point p1, Point p2) {
return distanceFromMe(p1).compareTo(distanceFromMe(p2));
}
}
使用自定义的比较和使用'Location.distanceBetween' – njzk2
创建'比较器“,并在那里写入必要的比较逻辑。可能需要将您的位置(经度和纬度)转换为数字对象,例如使用'BigDecimal',然后执行必要的操作。 –
可以someOne给我一些代码片段作为例子? – Reyjohn