我有网络服务,提供特定区域的财产清单 我的问题是,如果有任何案件,所有财产必须在地图上显示 列表中有两个以上属性lat和long相同然后该属性将显示在谷歌地图上的相同气泡上我已经解析了结果但我无法过滤那些在xml中具有相同纬度和长度的属性。我正在尝试解析后arraylist返回: -
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;
}
但进一步我无法做任何一个请帮帮我。请有人帮助我。
答案 0 :(得分: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;
}
}