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