簡體   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