0

我收到了一份包含 1200 个机场的文件,其中列出了机场代码、纬度、经度、城市和州。

例如: ANB 33.58 85.85 安尼斯顿 AL

最终,我将编写方法“距离”返回两个输入机场的距离和信息,“最近”返回代码和最近机场到输入机场的距离,“最短”找到开始并输入机场和旅行的最短行程到n个机场。

现在我的问题是,读取这些数据的最佳方法是什么,最终将使我以后更容易编写/计算距离?

比如我会在文件中读取,然后在一种方法中放入 HashMap 或 TreeSet,这将如何完成?还是我会等待并在其他方法中使用 HashMap/TreeSet?

抱歉,我还没有任何代码,但我现在被困在这个问题上,你们所有的方法都极大地帮助了我,所以现在只是寻找方向。

4

1 回答 1

0

听起来最简单的方法是创建一个对象来存储一个机场的信息,然后将所有这些对象存储在一个数组中。我这样说是因为您可能会对整个数组进行大量迭代以构建其他方法,并且由于您只有1200 个对象,因此任何花哨的排序都不会使您的程序加速那么多.

我想您也可以将您的机场集划分为地理区域并覆盖hashcode(),以便将附近的机场组合在一起,但这不会为您带来太多的速度,而且它对于靠近区域边缘的机场并不是特别有用。同样,您可以实现GeoHash,但这些也存在某些边缘条件的问题,这些条件可能与您的机场集无关。(如果您进行搜索,也有 GeoHashes 的开源 Java 实现。)

无论您做什么,都不要设置一组HashMaps将机场名称映射到您的其他每条数据。这是一种常见的初学者方法,但也是最慢的方法。创建一个对象要好得多。

于 2013-11-05T18:55:02.390 回答