Ich habe eine Klasse, die die Gym
enthält folgende Felder:Wie sortiere ich eine Sammlung von Objekten?
private int id;
private String name;
private String street;
private String housenumber;
private String zipcode;
private String lat;
private String lng;
private String city;
Alle Daten in einer Datenbank. Ein Benutzer kann Fitnessstudios nach bestimmten Kriterien filtern: Sport und Distanz. Ich habe eine Funktion, die alle Fitnessstudios aus der Datenbank holt und sie zu einem Layout hinzufügt. Die Felder lat
und lng
sind ebenfalls in der Datenbank enthalten.
Wenn ein Benutzer alle Turnhallen der Abstand zwischen dem Benutzer und der Position berechnet wird, mit dem folgenden Code:
double distance = Math.round(gpsHelper.calculateDistance(location.getLatitude(), Double.valueOf(gym.getLat()),
location.getLongitude(), Double.valueOf(gym.getLng()), 0.0, 0.0));
DecimalFormat df = new DecimalFormat("#.##");
String formattedDistance = "Afstand: " + String.valueOf(df.format(distance)) + " km";
Was ich ist folgendes tun möchte: Ich möchte alle sortieren die Turnhallen durch ihre Entfernung zum Benutzer. Also sortiere sie nach df.format(distance)
.
Könnte mir jemand einen Stoß in die richtige Richtung geben? Ich denke, ich habe den relevanten Code hinzugefügt.
können Sie vereinfachen Ihr Beispiel sein kann? wie etwas kleiner und leicht überprüfbar? – Eugene
Wenn Sie eine Liste von Fitnessstudios haben (Liste, dann sollten Sie compareTo in der Gym-Klasse überschreiben (das heißt, Ihre Gym-Klasse sollte das Comparable-Interface implementieren). –
"Sortieren nach jedem unebenen Index" - bitte erklären, was das ist Eigentlich, wenn Sie eine 'List Liste 'haben, würden Sie sie über' Collections.sort (list, someComparator) 'sortieren, wobei' someComparator' eine Implementierung von 'Comparator ' ist. (Sie könnten auch '' machen Gym "implementieren" Comparable ", aber das würde Ihnen nur erlauben, nach einer genauen Reihenfolge zu sortieren, zB Name _oder_ Distanz. Wenn Sie beide oder beide benötigen, brauchen Sie einen Komparator." –
Thomas