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

时间:2017-02-20 14:33:55

标签: java android arraylist location hashtable

我对我想要比较的方式以及从我正在创建的哈希表中收集数据有点困惑。代码有点凌乱,因为我现在对下一步的地方感到有些困惑,我道歉。

我有两个Hashtables。每个表都包含作为坐标的键。一张表持有经度,另一张持有纬度。每一方的价值都占有一个位置。我想要做的是比较两个表值,所以如果字符串是相同的,那么Key和Value可以放入一个单独的ArrayLists中。一个坐标列表,可能是一个用于lat,一个用于lon以使gps功能更容易,然后是位置列表。

以下是代码:

button.setText(getTextForButtonState(buttonState));

private String getTextForButtonState(int buttonState){
    if (buttonState == BUTTON_STATE_P){
        return "P";
    }
    else if (buttonState == BUTTON_STATE_A){
        return "A";
    }
    else if (buttonState == BUTTON_STATE_H){
        return "H";
    }
    else if (buttonState == BUTTON_STATE_L){
        return "L";
    }

    return null;
}

我只包含代码的纬度部分,因为我认为它只是重复了。

' userLatL'和' userLatH'是用户位置坐标20英里半径边界。我们的想法是返回数字差异/ 20英里半径范围内的键和值。

提前干杯!任何帮助都会非常感激!

2 个答案:

答案 0 :(得分:0)

我会用这种方法

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);
    }
}

答案 1 :(得分:0)

即使您正在查看20英里半径,如果半径越来越大,您将不得不在帐户中采用球形球形。

此外,您需要一些更好的结构,而不是2个哈希映射,其中键是lon / lat值。您可以使用简单的表来存储所有点(在数据库中或作为对象列表)。

我不想使用其他人的工作,这里解释了一切:

http://janmatuschek.de/LatitudeLongitudeBoundingCoordinates

祝你好运。