繁体   English   中英

比较两个哈希表值并将结果放入arraylist

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM