将元素列表添加到链接列表

时间:2017-04-13 08:10:06

标签: java android list arraylist linked-list

我正在使用谷歌地图开发一个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());
                    }
                });

但是它给了我错误,因为列表已经创建了。我该怎么办?请帮帮我。提前谢谢你。

1 个答案:

答案 0 :(得分:0)

由于列表已创建,因此您无需再次创建该列表。第二次,您只需为其分配值。 如果您从第二个代码中删除List<Map.Entry<LatLng,Float>>,则错误将消失。