【问题标题】:compare two hashtable values and put results into an arraylist比较两个哈希表值并将结果放入 arraylist
【发布时间】:2017-02-20 14:33:54
【问题描述】:

我对比较和收集我正在创建的哈希表中的数据的方式有点坚持。代码有点乱,因为我现在对下一步去哪里有点困惑,我道歉。

我有两个哈希表。每个表都包含作为坐标的键。一张表保存经度,另一张表保存纬度。每边的值都有一个位置。我想做的是比较两个表的值,所以如果字符串相同,那么可以将键和值放入单独的 ArrayLists 中。一个坐标列表,一个用于 lat 一个用于 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 英里半径内的键和值。

提前干杯!任何帮助将不胜感激!

【问题讨论】:

  • trailLat.keys() >= 这是什么魔法?。另外,为什么HashTable??
  • 我把它放进去是因为我想了解我想要在那里做的事情,我并不是说它是代码的真正形成。整个部分可能会一团糟,对此我深表歉意
  • 请发布可编译的代码。
  • 如果您有一组带有坐标的项目,并且想要过滤特定边界内的项目(maxLat、minLat、maxLon、minLon),这绝对是错误的方法..
  • 哦,那部分可以编译!但它并没有做我想要它做的事情。而且,我认为 HashTable 将是最好的方法? @fustaki 好的,你会推荐什么方法???

标签: java android arraylist location hashtable


【解决方案1】:

我会使用这种方法

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

【讨论】:

  • 感谢您的宝贵时间!但我有点困惑。一是代码编译不正确,第二个List之前有问题……?其次,我应该如何在 Trails ArrayList 中构建路径列表?
【解决方案2】:

即使您查看的是 20 英里半径,如果该半径变得更大,您也必须在帐户中采用地球的球形形状。

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

我不想用别人的作品,这里都说明了:

http://janmatuschek.de/LatitudeLongitudeBoundingCoordinates

祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    相关资源
    最近更新 更多