[英]compare two hashtable values and put results into an arraylist
我有点想从我正在创建的哈希表中比较和收集数据的方式。 抱歉,代码有些混乱,因为我现在对下一步该怎么办感到困惑。
我有两个哈希表。 每个表都包含作为坐标的键。 一个表保存经度,另一个表保存纬度。 每一边的值都包含一个位置。 我想做的是比较两个表的值,因此,如果字符串相同,则可以将键和值放在单独的ArrayList中。 一个坐标列表,也许一个用于纬度,一个用于lon以使gps功能更容易,然后是一个位置列表。
这是代码:
public static void trails(String[] args) {
Hashtable<Double, String> trailLat = new Hashtable<Double, String>();
trailLat.put(51.7181283, "Bike Park Wales");
...
Hashtable<Double, String> trailLon = new Hashtable<Double, String>();
trailLon.put(-3.3633637, "Bike Park Wales");
...
if ( trailLat.keys() >= userLatL && trailLat.keys() <= userLatH ) {
trailLat.values().retainAll(trailLon);
ArrayList<Item> items = new ArrayList<Item>(trailLat.values());
}
....
我只包含了代码的纬度部分,因为我认为这只是重复了。
“ userLatL”和“ userLatH”是用户位置坐标20英里半径范围。 想法是返回落在该数字差/ 20英里半径内的键和值。
提前加油! 任何帮助将非常感激!
我会用这种方法
class Trail{
String name;
double lat,lon;
}
double LAT_MIN, LAT_MAX, LON_MIN, LON_MAX;
List<Trail> trails = new ArrayList<Trail>();
//populate trails from db or whatever
List<Trail> goodTrails = new ArrayList<Trail>();
for(Trail trail : trails){
if(trail.lat > LAT_MIN && trail.lat < LAT_MAX && trail.lon > LON_MIN && trail.lon < LON_MAX ){
goodTrails.add(trail);
}
}
即使您查看的半径是20英里,但如果半径增大,则帐户中的地球形状必须为球形。
另外,您将需要一些更好的结构,而不是2个哈希图,其中键是lon / lat值。 您可以使用一个简单的表来存储所有点(在数据库中或作为对象列表)。
我不想使用别人的作品,这里解释了所有内容:
http://janmatuschek.de/LatitudeLongitudeBoundingCoordinates
祝好运。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.