【发布时间】:2017-07-10 22:42:44
【问题描述】:
我正在研究一种方法,该方法在给定 GPS 坐标的特定半径内创建公交车站的 HashSet,然后将此集合转换为数组。
我想按相对于 GPS 坐标的距离来排序这个数组,这是最有效的方法吗?
public Stop[] possibleStops(GPSCoordinate spot) {
Set<Stop> viableBusStops = new HashSet<Stop>();
for(Map.Entry<String, Stop> stopEntry : stops.entrySet()) {
Stop applicant = stopEntry.getValue();
Double distance = spot.distance(applicant.getGPSCoordinate());
if (distance<=threshold) {
viableBusStops.add(applicant);
}
}
Stop[] stopList = viableBusStops.toArray(new Stop[0])
return stopList;
}
编辑: 挑战在于“距离”不是 Stop 对象的属性。我想知道我是否可以对那些只计算一次距离的公交车站进行排序。
【问题讨论】:
-
使用内置的 Collections.sort 方法
-
创建一个具有
stop和distance属性的StopDistance类型,并将其而不是Stop实例存储在临时集合中。相应地排序。