2017-04-13 77 views
-1

我正在開發一個帶google地圖的android應用程序。 我創建了一個存儲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); 

所以我通過一個循環運行這段代碼,找到首位用戶之間的距離進入與其他地方並保存相應的距離和LNG /緯度在distance_Map.After,我用下面的代碼進行排序這些距離。

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

       } 
      }); 

這將運行perfectly.But我需要使用相同的LinkedList sorted_Distance_LatLng_List排序另一組distances.To的做,我通過清除其值使用相同的HashMap(distance_Map)。

distance_Map.clear(); 
distance_Map.put(markerPoints.get(i), distance); 

,但我不知道如何插入這個distance_Map到相同的鏈表(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

由於列表已經創建,您不需要再次創建它。第二次,您只需將值分配給它。 如果您從第二個代碼中刪除List<Map.Entry<LatLng,Float>>,則錯誤將消失。