Hoe weet jouw applicatie hoe hij de clubs moet ordenen?
Dat weet hij niet. Er zijn namelijk heel veel opties
1) Ordenen op lexicografische namen
2) Ordenen op punten
3) Ordenen op gewonnen wedstrijden
4) Ordenen op gespeelde wedstrijden
Nu zijn sommige opties logischer dan andere, maar dat weet je applicatie toch niet
Wat moet ik dan doen
Stel we hebben het volgende:
Een competitie met 3 clubs A, B en C
Nu willen we de clubs sorteren op aantal punten
Daarvoor moeten we dus ervoor zorgen dat bekend wordt welke club 'hoger' moet staan dan de andere.
Hiervoor introduceren we de compareTo( Object vergelijkMet ) methode, waarin we het opgegeven clubje vergelijken met de club waarvan de methode wordt aangesproken.
Om dit bekend te maken aan het programma implementeren we de Comparable interface, zodat het programma weet dat we die methode implementeren.
En wat doet die methode dan?
Die methode geeft een negatief getal als A > B
een 0 als A = B
en een positief getal als A < B
een mogelijkde implementatie
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| public class Club implements Comperable {
// mooie methodes
// maar die zitten al in je class
//
// comperator functie
// Compare op totaal aantal punten
//
public int compareTo( Object vergelijkingsObject ) {
// Nu trekken we de punten van het object dat gegeven is van de punten van
// deze club af. Als deze club meer punten heeft, wordt het getal negatief e
// zal deze club boven de gegeven club staan
//
return (Club)vergelijkingsObject.geefPunten() - geefPunten();
}
} |
Als je op objecten met zo'n methode een Arrays.sort() loslaat, dan gaat ie hem mooi sorteren, op de manier die jij gedefinieerd hebt