2017-04-13 10 views
-1

Ich entwickle eine Android-Anwendung mit Google Maps. Ich habe eine Hashmap erstellt, die Lat/Lng, Float darin speichert.Hinzufügen einer Liste von Elementen zu einer verknüpften Liste

Ich verwende dies, um den Abstand zwischen 2 gegebenen Breiten- und Längengrad mit der folgenden Methode zu speichern.

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

So betreibe ich diesen Code durch eine Schleife und finden Abstände zwischen den ersten Platz Benutzer gibt und die anderen Orte und speichert die entsprechenden Abstände und Lng/Lat in der distance_Map.After, dass ich den folgenden Code verwenden, um zu sortieren diese Entfernungen.

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

       } 
      }); 

Dies läuft perfectly.But Ich brauche die gleiche LinkedList sorted_Distance_LatLng_List verwenden einen anderen Satz von distances.To sortieren zu tun, dass ich das gleiche hashmap (distance_Map) verwenden, indem ihre Werte zu löschen.

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

aber ich weiß nicht, wie diese distance_Map auf den gleichen LinkedList einzufügen (sorted_Distance_LatLng_List) .I den folgenden Code verwenden

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

Aber es gibt mir den Fehler, weil die Liste bereits erstellt . Wie kann ich das tun? Bitte helfen Sie mir. Vielen Dank im Voraus.

Antwort

0

Da die Liste bereits erstellt wurde, müssen Sie sie nicht erneut erstellen. Beim zweiten Mal weisen Sie ihm einfach den Wert zu. Wenn Sie List<Map.Entry<LatLng,Float>> aus dem zweiten Code entfernen, wird der Fehler weggehen.

Verwandte Themen