0

我有提供特定区域财产列表的网络服务我的问题是所有财产都必须显示在地图上,如果在任何情况下列表中有两个以上的经纬度相同的财产,那么该财产将显示在谷歌上的相同气泡上map 我一直在解析结果,但我无法过滤那些在 xml 中具有相同纬度和经度的属性。我正在尝试解析数组列表返回后:-

 private Vector groupTheList(ArrayList<Applicationdataset> arrayList) 
{
    Vector<ArrayList<Applicationdataset>> mgroupvector = new Vector<ArrayList<Applicationdataset>>();
    ArrayList<Applicationdataset> mfirstList = new ArrayList<Applicationdataset>();
    ArrayList<Applicationdataset> mylist=null;
    int sizeoflist = arrayList.size();
    for(int index =0;index<arrayList.size();index++)
    {
         //ArrayList<Applicationdataset> mylist= mgroupvector.get(index);
         if(mylist==null)
         {
             mylist = new ArrayList<Applicationdataset>(); 
         }
         mfirstList.add(arrayList.get(index));

        for(int mindex=1;mindex<arrayList.size();mindex++)
        {
         if(arrayList.get(index).getLatitude().equalsIgnoreCase(arrayList.get(mindex).getLatitude()) &&
                 arrayList.get(index).getLongitude().equalsIgnoreCase(arrayList.get(mindex).getLongitude()))
         {
             mfirstList.add(arrayList.get(mindex));
             arrayList.remove(mindex);
         }
        }
        mylist.addAll(mfirstList);
        mgroupvector.add(mylist);
        mfirstList.clear();
        arrayList.remove(index);
        index-=1;
    }
    mgroupvector.add(arrayList);
    return mgroupvector;

}   

但进一步我无法做任何人请帮助我。请任何人帮助我。

4

1 回答 1

1

像这样的东西:

.......
private Collection<List<Applicationdataset>> groupTheList(ArrayList<Applicationdataset> arrayList) {
    Map<Key, List<Applicationdataset>> map = new HashMap<Key, List<Applicationdataset>>();
    for(Applicationdataset appSet: arrayList){
        Key<String, String> key = new Key(appSet.getLatitude(), appSet.getLongtitude());
        List<Applicationdataset> list = map.get(key);
        if(list == null){
            list = new ArrayList<Applicationdataset>();
            map.put(key, list);
        }
        list.add(appset);
    }
    return map.values();
}
........

class Key {
    String _lat;
    String _lon;

    Key(String lat, String lon) {
        _lat = lat;
        _lon = lon;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Key key = (Key) o;

        if (!_lat.equals(key._lat)) return false;
        if (!_lon.equals(key._lon)) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = _lat.hashCode();
        result = 31 * result + _lon.hashCode();
        return result;
    }
}
于 2012-06-26T14:02:23.527 回答