我正在使用谷歌地图开发一个Android应用程序。 我创建了一个hashmap,它存储了Lat / Lng,Float。
Map<LatLng,Float> distance_Map = new HashMap<LatLng, Float>();
我使用此方法使用以下方法存储2个给定纬度和经度之间的距离。
Location loc1 = new Location("");
loc1.setLatitude(markerPoints.get(0).latitude);
loc1.setLongitude(markerPoints.get(0).longitude);
Location loc2 = new Location("");
loc2.setLatitude(markerPoints.get(i).latitude);
loc2.setLongitude(markerPoints.get(i).longitude);
float distance = loc1.distanceTo(loc2);
distance_Map.put(markerPoints.get(i), distance);
所以我通过一个循环运行这个代码,找到第一个用户进入和其他地方之间的距离,并在distance_Map中存储相应的距离和Lng / Lat。之后,我使用以下代码对这些距离进行排序。 / p>
List<Map.Entry<LatLng,Float>> sorted_Distance_LatLng_List = new LinkedList<Map.Entry<LatLng, Float>>(distance_Map.entrySet());
Collections.sort(sorted_Distance_LatLng_List, new Comparator<Map.Entry<LatLng, Float>>() {
@Override
public int compare(Map.Entry<LatLng, Float> o1, Map.Entry<LatLng, Float> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
这完全运行。但我需要使用相同的linkedlist sorted_Distance_LatLng_List来排序另一组距离。为此,我通过清除其值来使用相同的hashmap(distance_Map)。
distance_Map.clear();
distance_Map.put(markerPoints.get(i), distance);
但我不知道如何将此distance_Map插入到同一个LinkedList(sorted_Distance_LatLng_List)。我使用以下代码
sorted_Distance_LatLng_List.clear();
List<Map.Entry<LatLng,Float>> sorted_Distance_LatLng_List = new LinkedList<Map.Entry<LatLng, Float>>(distance_Map.entrySet());
Collections.sort(sorted_Distance_LatLng_List, new Comparator<Map.Entry<LatLng, Float>>() {
@Override
public int compare(Map.Entry<LatLng, Float> t1, Map.Entry<LatLng, Float> t2) {
return t1.getValue().compareTo(t2.getValue());
}
});
但是它给了我错误,因为列表已经创建了。我该怎么办?请帮帮我。提前谢谢你。
答案 0 :(得分:0)
由于列表已创建,因此您无需再次创建该列表。第二次,您只需为其分配值。
如果您从第二个代码中删除List<Map.Entry<LatLng,Float>>
,则错误将消失。