Ich versteh die compareTo Funktion noch nicht ganz. Hab schon im Forum gesucht, und diese zwei Methoden gefunden. Meine Frage nun, warum sind die beiden Methoden gleich?
Was bewirkt die compareTo Funktion eigentlich? (Ich habe in meinem Programm eine Array Liste, die ich abfallend sortieren soll und dies mach ich mit dem compareTo. Nur hab ich den Hintergrund der Funktion noch nicht ganz verstanden. Kann es sein, dass durch das compareTo die Array Liste so verändert wird, dass das Array 1 hinter das Array 2 gestellt wird, wenn Array 1 kleiner als Array 2 ist?)
Meine konkrete Frage: In der Main Methode nutze ich die Funktion Collections.sort, da ich ja meine Arrays aufsteigend sortieren möchte. Für was muss ich dann überhaupt die Funktion compareTo in der anderen Klasse deklarieren? (ich sehe noch keinen Zusammenhang zwischen den beiden Funktionen!)
Die Methode sort muss ja schließlich wissen wie sie sortieren soll. Woher soll die Methode denn wissen, welcher Student nun eine höhere Ordnung hat als ein anderer? Könnte ja schließlich sein, dass du sagst, die Matrikelnr ist entscheidend, das Alter, die Zensur or whatever..und dann eben auch aufsteigend/absteigend etc.
compareTo gibt eben eine natürliche Ordnung vor, wenn du noch andere definieren willst wäre der Comparator eine Alternative.
Wenn du das alphabetisch sorierst, dann kommt B nach A
compareTO()
entscheidet ob das A links oder Rechts von B liegt oder ob es die gleiche Position hat.
Das geht nun für Strings nach dem alphabet.
Aber du kannst auch komplexe Datenstrukturen haben, wie Person mit name und alter.
Wenn du nun sagen willst, das nach alter sortiert werden soll, dann muss Person das Interface Compareable implementierten. Und da drin muss man sagen wann Person 1 vor Person 2 steht.
Mit dieser compareTO()-Funktion wird das Alter deines im Paramterübergeben Objektes mit dem Alter des Objektes, mit dem du die Funktion aufrufst verglichen.
Entweder du erhälst (bei Gleichheit) den Wert 0, den Wert 1 (wenn das aktuelle Objekt größer, als das übergebene ist), oder den Wert -1 (wenn das übergebene Objekt äter ist).
Mithilfe dieses Vergleiches, kannst du für jedes Student-Objekt herausfinden ob es älter als ein x-beliebiges ist. Um dann letztlich zu sortieren, brauchst du nochmal eine extra Schleife, die das mithilfe deiner Funktion tut.