Java Sortieren ArrayList<Integer>
Gut , ich bin stock auf etwas sehr einfaches, aber ich kann ' T es herausfinden.
First off, ich weiß, dass es Collection.sort()
Methode, aber meine ArrayList ist eine Art von Verknüpfungen zu Daten zum Hauptobjekt, und meine Sortierung ist erforderlich, um gemäß diesem Objekt die Daten.
Dies ist ein sport-Wettbewerb und die ArrayList<Integer> numbers
hält die zahlen der Teilnehmer, die bestanden hat, einen checkpoint.
Und ich muss Sortieren diese ArrayList-von der besten Zeit von min zu max, um ihm ein, wer an 1. Stelle, 2. etc.
dafür sollte ich meine Frage Competiton Objekt :
public ArrayList<Integer> sort (ArrayList<Integer> numbers)
for (int i=0;i<numbers.size){
long time = competition.participant.get(numbers.get(i)).getTimeOfLastCheckPoint();
/*Do something to make another ArrayList<Integer> sortedArray
where all this will be sorted by this time parameter from minimal to maximum*/
return sortedArray;
}
dies ist nicht der eigentliche code, aber du hast die Idee. Steckte ich mit dem Versuch zu finden, die scheinbar einfache Lösung.
Bitte Helfen Sie
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es scheint umständlich zu Sortieren, eine
ArrayList<Integer>
basierend auf andere Dinge, die nichts direkt zu tun mit dem, was Sie wirklich wollen, zu Sortieren, auf-die Zeit.Ich würde das design anders. Es sieht aus, haben Sie eine Art von Objekt definiert, auf dem Sie anrufen können
getTimeOfLastCheckPoint()
. Für jetzt, ich nehme an, es heißtParticipant
. Anstelle der Aufrechterhaltung einesArrayList<Integer>
zum speichern von index-basierte Verweise auf Ihre Teilnehmer, ich würde behaupten einArrayList<Participant>
.Dann würde ich eine Klasse erstellen, die
Comparator<Participant>
(vielleichtParticipantComparator
) (Comparator
javadocs ), der weiß, wie vergleichenParticipant
s, basierend auf den Ergebnissen der AufrufgetTimeOfLastCheckPoint()
. Dann ist die Sortierung einfachCollections.sort(participantsArrayList, new ParticipantComparator());
.Schreiben Sie eine
java.util.Comparator
vergleichtInteger
s, indem Sie Sie als index in die Teilnehmer-array:Jetzt können Sie mit diesem comparator zum Sortieren der ganzen zahlen:
Aber bevor Sie dies tun, Fragen Sie sich, warum Ihre Liste enthält
Integer
-Objekte, die Indizes auf der Teilnehmer-Liste, anstatt derParticipant
s selbst!Für mich klingt das wie eine workaround-Lösung für eine halbe getan SQL-Abfrage. Im Falle, dass sich Ihre Daten in einer Datenbank (und ich bin mir ziemlich sicher, dass dies der Fall ist), ändern Sie Ihre SQL - Abfrage, so dass Sie nicht haben zu tun, dass die Sortierung der Daten auf der Anwendungsebene. Das ist gut für mindestens zwei Gründen:
Können Sie eine Komparator Sortieren Sie die Liste nach Ihren Rennen Dauer und auch for-each-Schleife in Java.